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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-30 05:39:091029瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn