我在构建我的python项目时遇到了一些问题。目前它是一堆文件在同一个文件夹中。我试图把它的结构像测试和python包结构
proj/
__init__.py
foo.py
...
bar/
__init__.py
foobar.py
...
tests/
foo_test.py
foobar_test.py
...
问题是,我不能从内部目录,从外部目录导入模块。这对测试尤其恼人。
我已阅读关于相对进口的PEP 328和关于从主模块进行的相对进口的PEP 366。但是这两种方法都需要基础包装在我的PYTHONPATH中。事实上,我得到以下错误
ValueError: Attempted relative import in non-package.
所以我添加的测试文件
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
我仍然得到同样的错误的顶部以下样板代码。什么是正确的方式来
- 结构的包,完成测试,并
- 增加的基本目录,以允许进口的路径?
编辑作为评论的要求,我想补充一个例子导入失败
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
from ..foo import Foo
可以显示导入失败的示例吗? –
此外,请为您的'PYTHONPATH' –
'echo $ PYTHONPATH'包含值现在只是空的。 – Andrea