【发布时间】:2011-03-05 18:22:37
【问题描述】:
我在构建我的 python 项目时遇到了一些问题。目前它是同一个文件夹中的一堆文件。我试图像这样构造它
proj/
__init__.py
foo.py
...
bar/
__init__.py
foobar.py
...
tests/
foo_test.py
foobar_test.py
...
问题是我无法从内部目录导入外部目录中的模块。这对测试来说尤其烦人。
我已阅读 PEP 328 关于相对导入和 PEP 366 关于从主模块的相对导入。但是这两种方法都要求基本包在我的 PYTHONPATH 中。确实我收到以下错误
ValueError: 尝试在非包中进行相对导入。
所以我在测试文件的顶部添加了以下样板代码
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
我仍然得到同样的错误。正确的方法是什么
- 构建一个包,完成测试,并
- 将基目录添加到路径以允许导入?
编辑根据评论中的要求,我添加了一个失败的示例导入(在文件 foo_test.py 中)
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
from ..foo import Foo
【问题讨论】:
-
你能展示一个失败的导入示例吗?
-
另外,请包含您的
PYTHONPATH的值 -
echo $PYTHONPATH现在是空的。