我的目录结构是这样的
main/src/domain/entities.py
-entities.py has some classes
main/tests/test.py
来自test.pt
的{{1}}中的
测试和域目录都有domain.entities import MyCLass
个。
虽然找不到我想要的模块。
我使用__init__.py
任何想法为什么?
答案 0 :(得分:3)
是sys.path中的main / src吗? Python通过搜索sys.path中的目录来解析模块名称。例如“import ../module.py”无效。要解决您的问题,请执行以下操作:在“main / tests / test.py”文件中添加:
import sys, os
sys.path.insert(0, os.path.abspath("../src") )
# Then try
from domain.entries import MyClass
您还需要确保main / src / domain包含 init .py文件。 另外,你不需要在main / tests中使用 init .py,除非你要将它的父目录添加到你的路径并导入tests.something。
希望这有帮助。
答案 1 :(得分:1)
包中的每个目录都需要__ini__.py
main/__init__.py
main/src/__init__.py
main/src/domain/__init__.py
main/src/domain/entities.py
main/tests/__init__.py
答案 2 :(得分:0)
更容易使用sys.path,但是如果你想要一个不涉及全局变量的解决方案,那么就在这里。
__init__.py
文件包含在与要导入的模块相同的文件夹中。from path.to.file.filename import MyClass
我刚才测试了这种特殊的方法。我的文件夹层次结构是一个main.py
和两个嵌套文件夹domains/entities
。 除最高级别(即main.py
所在级别)之外的每个文件夹中都包含__init__.py
个文件。
画报:
main.py
project/
__init__.py
domains/
__init__.py
entities/
__init__.py
module1.py