我有一个 Python 3.9.2 项目,其目录结构如下:
lib/
├─ mod1.py
├─ mod2.py
├─ __init__.py
main.py
在/main.py
,我有from lib import mod1
。在/lib/mod1.py
,我有import mod2
。当我运行时/main.py
,我收到以下错误:
Traceback (most recent call last):
File "/main.py", line 1, in <module>
from lib import mod1
File "/lib/init.py", line 1, in <module>
import mod2
ModuleNotFoundError: No module named 'mod2'
为什么会这样?当我将代码更改/lib/mod1.py
为 say 时from lib import mod2
,代码工作正常,但我不明白为什么会修复它。我不应该能够导入/lib/mod2.py
我最初试图顺便说一下,因为两者mod1.py
并mod2.py
都在同一个目录?
在 中/lib/mod1.py
,您可能想要执行以下操作:
# relative import - entire module
from . import mod2
# relative import - specific piece
from .mod2 import foo
或
# absolute import - entire module
from lib import mod2
# absolute import - specific piece
from lib.mod2 import foo
在 Python 中导入东西的正确方法真的很棘手,因为它取决于你从哪里运行脚本。
import mod2
会导致问题,但是/lib/mod1.py
要从 inside运行(说它可以运行)lib
,那么import mod2
将是正确的,并且上述替代方案会导致错误。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句