问题描述
我知道已经有很多类似的问题,但没有一个答案对我真正有用,所以在将其标记为重复之前,请先阅读我的问题(并告诉我其他解决方案哪里出了问题)。
我的项目结构如下:
Project/
|-- src/
|-- project/
|-- a.py
|-- b.py
|-- tests/
|--c.py
我不太了解如何构建 python 项目/包等如何工作。
我想在我的 a
模块中导入 c
。
我尝试过类似的事情
from project.a import xyz
from ..a import xyz
我还在 __init__.py
和 project
目录中添加了 tests
文件。
但我仍然总是得到 ModuleNotFoundError: No module named 'project'
然后我尝试在导入 project
之前将 sys.path
路径添加到我的 a
,但我仍然收到相同的错误消息。
我做错了什么?
解决方法
添加 __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
的相对路径保持不变,它就会起作用。