在Python中使用unittest进行相对导入
在Python中使用unittest进行相对导入
我试图使用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
这三种方式都以与上述相同的错误失败。当我在project目录中使用相同的三种语法时,我得到以下错误:
ValueError: Attempted relative import beyond toplevel package
再次感谢。