我正在尝试使用Python的unittest和相对导入,但我似乎无法弄清楚。我知道有很多相关的问题,但到目前为止都没有帮助过我。如果这是重复的问题,那么很抱歉,但我真的很感谢任何帮助。我试图使用PEP 328中的语法http://www.python.org/dev/peps/pep-0328/,但我一定是做错了什么。
我的目录结构是:
project/
__init__.py
main_program.py
lib/
__init__.py
lib_a
lib_b
tests/
__init__.py
test_a
test_b
我使用以下方式运行测试:
python -m unittest test_module1 test_module2
test_a需要同时导入lib/lib_a和main_program。这是我尝试使用的来自test_a的代码:
from ..lib import lib_a as lib
from ...project import main_program
两者都会引发此错误:
ValueError: Attempted relative import in non-package
我所有的 init.py 文件目前都是空的。
如果有任何具体建议,将不胜感激!!
编辑:
这可能是答案:Python Packages? 我仍在验证它是否有效。
编辑 II:
澄清一下,在这一点上,我已经尝试以3种不同的方式运行我的测试文件:
project/tests $ python -m unittest test_a
project/tests $ python -m test_a
project/tests $ ./test_a
所有三个方法都出现了与上述相同的错误。当我在项目目录中使用相同的三种语法时,我会得到这个错误:
ValueError: Attempted relative import beyond toplevel package
再次感谢。