簡體   English   中英

無法在同一 package 中導入 Python 模塊

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM