[英]Cannot import Python module in same package
我有一个 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
中的代码更改为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
内部运行/lib/mod1.py
(说它是可运行的),那么import mod2
将是正确的,并且上述替代方案会导致错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.