首頁 > 後端開發 > Python教學 > 為什麼在 Python 3 中使用相對導入時會出現「ImportError」?

為什麼在 Python 3 中使用相對導入時會出現「ImportError」?

Mary-Kate Olsen
發布: 2024-12-30 05:39:09
原創
980 人瀏覽過

Why Do I Get

Python 3 中的相對導入:揭開謎底

相對導入提供了一種從同一目錄導入模組的便捷方法。但是,在某些情況下,可能會導致以下錯誤:

  • 「ImportError:嘗試在沒有已知父包的情況下進行相對導入」
  • 「ModuleNotFoundError:沒有名為的模組'module_name'"
  • "SystemError: 父模組 ''未加載,無法執行相對導入"

要理解這些錯誤,我們來分析一下常見的目錄結構:

main.py
mypackage/
    __init__.py
    mymodule.py
    myothermodule.py
登入後複製

在這種情況下,相對導入“from .mymodule import 「myothermodule.py」中的「myfunction」將會失敗,因為「mymodule.py」在模組搜尋路徑中不可見。解決方案是使用絕對導入而不是相對導入:

這可以確保Python在“mypackage”模組路徑中搜尋“mymodule”,假設該路徑位於sys.path 中。 🎜>
from mypackage.mymodule import myfunction
登入後複製

將父目錄加入sys.path:

  • 運行時使用 -m選項腳本:
import sys
import os

SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.dirname(SCRIPT_DIR))

from mypackage.mymodule import myfunction
登入後複製
  • 這種方法允許在Python模組系統中而不是在檔案系統中找到模組。導入源自Python 的模組解析機制。

以上是為什麼在 Python 3 中使用相對導入時會出現「ImportError」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板