我有一个类似于以下内容的文件结构
project
src
__init__.py
main.py
module.py
secondary.py
test
test_module.py
module.py
import secondary
x = False
secondary.py
pass
test_module.py
from unittest import TestCase
from src import module
class ModuleTest(TestCase):
def test_module(self):
self.assertTrue(module.x)
在
python3 -m unittest discover
中调用/project/
会产生错误: File "/Users/Me/Code/project/test/test_module.py", line 6, in <module>
from src import module
File "/Users/Me/Code/project/src/module.py", line 1, in <module>
import secondary
ImportError: No module named 'secondary'
我该怎么做才能将
secondary.py
导入而不会出现错误? 最佳答案
在Python 3(和带有from __future__ import absolute_import
的Python 2)中,从同一包中导入另一个模块时,您必须明确要使用哪个模块。仅当module.py
是Python模块搜索路径中文件夹中的顶级模块时,您在import secondary
(secondary
)中使用的语法才有效。
要从您自己的包中显式请求相对导入,请改用from . import secondary
。或者,使用包的名称以及模块(from src import secondary
或import src.secondary
,并在模块其他位置使用src.secondary
而不是secondary
)进行绝对导入。
关于python - Python unittest无法解析导入语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34986900/