我尝试阅读其他类似的问题,但答案对我不起作用,例如 Python submodule imports using __init__.py和 module has no attribute
我的文件夹结构如下:
python_scripts
├── lib
│ ├── __init__.py # import lib.talk
│ └── talk.py # def sayhello(x): print(x)
│
├── src
│ ├── __init__.py # import lib.talk
│ └── data
│ ├── __init__.py # import lib.talk
│ └── main.py # from lib.talk import sayhello
│ sayhello('hi')
│
└── __init__.py # import lib.talk
这会引发错误:
Traceback (most recent call last):
File "main.py", line 1, in <module>
from lib.talk import sayhello
ModuleNotFoundError: No module named 'lib.talk'
奇怪的是,如果我只是在 main.py 中“导入 lib”,就没有错误。我该如何解决这个问题?
我使用的是 Windows,我非常希望避免使用 sys.path 方法,因为我们不想对路径进行硬编码(这可能会被其他团队将来使用)。
最佳答案
在您的 main.py
文件中,在顶部添加以下内容。
import sys
path = r'{path_to_python_scripts}'
if path not in sys.path:
sys.path.append(path)
# Now import
import lib
或
import sys, os
path = os.path.abspath('../..')
if path not in sys.path:
sys.path.append(path)
# Now import
import lib
关于Python 子模块导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49752378/