【发布时间】:2012-04-22 14:09:51
【问题描述】:
这个(或类似的)问题之前已经被问过很多次了,但在我的情况下,没有一个提供的解决方案有效。 我的项目结构是这样的:
| project_2
main.py
__init__.py
systems.py
| config
__init__.py
options.py
| database
__init__.py
database.py
entity.py
| tests
__init__.py
test_systems.py
test_options.py
test_database.py
test_entity.py
显然我需要导入tests包下的test modules中的所有模块。我尝试了使用点语法的相对导入:
from ..systems import System
from ..config import options
from ..database.entity import Entity
返回 ValueError:尝试在非包中进行相对导入。我已经尝试过一个包结构,其中所有东西(包括系统)都在它自己的包中。它失败并显示相同的消息。
真正困扰我的是这应该可以工作:PEP 328,但它没有。我真的很想避免将包附加到 $PYTHONPATH 或使用一些疯狂的方法,例如从文件路径加载带有 imp 的模块。
我读到问题的一部分可能是 systems.py 在主包中,但这并不能解释为什么其余的相对导入也不起作用。
附:实际上,我从 PEP 328 重新创建了示例只是为了对其进行测试,但它不起作用。
【问题讨论】:
标签: import python-2.7