我知道已经有很多类似的问题了,但是没有一个答案真的适合我,所以请先阅读我的问题(并告诉我我在其他解决方案中哪里出错了),然后再将其标记为重复。
我的项目结构是这样的:
Project/
|-- src/
|-- project/
|-- a.py
|-- b.py
|-- tests/
|--c.py
我不太了解如何构建python项目/包等如何准确工作。我想在我的c
模块中导入a
。
我尝试了
from project.a import xyz
from ..a import xyz
我还将__init__.py
文件添加到project
和tests
目录。
但是我总是得到ModuleNotFoundError: No module named 'project'
然后我尝试在导入a
之前将project
路径添加到sys.path
,但仍然得到相同的错误信息。
我做错了什么?
添加__init__.py
,并使用sys.path
添加项目路径,并导入a
应该可以工作。但我建议在您的c.py
中尝试以下操作:
import sys
from pathlib import Path
filepath = Path(__file__)
filepath = filepath.parent
sys.path.insert(0, str(filepath))
import a
为什么?这是一个通用的解决方案,只要从c
到a
的相对路径保持不变,就可以工作。