我有一个这样的目录结构:
project
| __init__.py
| project.py
| src/
| __init__.py
| class_one.py
| class_two.py
| test/
| __init__.py
| test_class_one.py
哪个project.py只是实例化ClassOne并运行它。
我的问题是在测试中,我不知道如何导入 src 类。我尝试过导入这些方式,但什么也没得到:
from project.src.class_one import ClassOne
和
from ..src.class_one import ClassOne
我做错了什么?有没有更好的目录结构?
-----编辑-----
我改变了我的目录结构,现在是这样的:
Project/
| project.py
| project/
| __init__.py
| class_one.py
| class_two.py
| test/
| __init__.py
| test_class_one.py
在 test_class_one.py 文件中,我尝试以这种方式导入:
from project.class_one import ClassOne
但它仍然不起作用。我没有在 bin 目录中使用可执行的 project.py ,因为我无法从更高级别的目录导入包。 :(
谢谢。 =D
最佳答案
这完全取决于你的 python 路径。实现您想要执行的操作的最简单方法是将 PYTHONPATH 环境变量设置为“project”目录所在的位置。例如,如果您的来源居住在:
/Users/crocidb/src/project/
我愿意:
export PYTHONPATH=/Users/crocidb/src
然后在 test_one.py 中我可以:
import project.src.class_one
实际上我可能会这样做:
export PYTHONPATH=/Users/crocidb/src/project
然后在 test_one.py 中:
import src.class_one
但这只是我的偏好,实际上取决于您的层次结构的其余部分是什么。另请注意,如果 PYTHONPATH 中已有某些内容,您需要添加以下内容:
export PYTHONPATH=/Users/crocidb/src/project:$PYTHONPATH
如果您希望最后搜索项目路径,则可以采用其他顺序。
这也适用于 Windows,只不过您需要使用 Windows 语法来设置环境变量。
关于python - python 包和测试的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3251275/