【发布时间】:2014-02-09 20:55:14
【问题描述】:
我知道还有其他类似的问题,但没有一个对我有用。我一直在创建一个简单的 python 应用程序并决定对其进行组织(而不是将应用程序和 test.py 放在同一目录中。我尝试像这样设置它:
C:\Dev\project\module\test
- project
- __init__.py
- module
- __init__.py
- module.py
- test
- __init__.py
- test_module.py
现在我已经尝试了所有我能想到的将 module.py 导入 test_module.py
import module
import project.module
import module.module
import project.module.module
from project import module
from project.module import module
这些都不起作用。它失败了:
ImportError: No module named 'whatever i put in above'
这让我发疯了,这不应该很简单吗?我错过了什么?我添加了一个测试,使用 import sys print sys.path 显示我的 PYTHONPATH。列表中的第一项是 C:\Dev\project\module\test
编辑:
我也尝试将 init 添加到顶层,但没有帮助。我知道我可以按照许多答案的建议强制编辑 sys.path。
正确的方法是什么?例如,构建项目以避免此问题的标准或明智的方法是什么?
【问题讨论】:
-
您能在
project中添加__init__.py吗?这意味着 Python 会将该目录作为 Python 模块读取。 -
您是否尝试将包含单元测试的路径添加到 PYTHONPATH?
-
这里有一些关于项目结构的好建议:blog.habnab.it/blog/2013/07/21/python-packages-and-you
-
我还建议使用
virtualenv和setuptools,这样您就可以在运行python setup.py develop后立即安装、使用和开发您的包 -
将
__int__.py都重命名为__init__.py
标签: python python-module python-unittest