[英]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.