首頁 >後端開發 >Python教學 >如何避免Python中「嘗試在非套件中進行相對導入」錯誤?

如何避免Python中「嘗試在非套件中進行相對導入」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-12-22 04:40:14653瀏覽

How Can I Avoid the

Python 中的相對導入

了解Python 中的相對導入對於避免「嘗試在非包裝中進行相對導入錯誤至關重要。

腳本與腳本模組

一個關鍵的區別來自於 Python 檔案的載入方法。當直接作為腳本執行時,其名稱設定為 __main__。相反,如果導入,其名稱包含套件資訊。

命名約定

例如,若匯入 package/subpackage1/moduleX.py 中的 moduleX,則其名稱變成 package.subpackage1.moduleX。但是,如果直接運行,則其名稱為 __main__。

相對導入

相對導入依賴模組的名稱來決定其包層次結構。名稱中不包含點的模組不會被視為套件的一部分。

錯誤原因

在名稱表明其名稱的模組中嘗試相對導入時會發生錯誤re 不在包中(即,它們的名稱缺少點)。這包括腳本(因為 main 沒有點)和直接從目前目錄載入的模組(Python 將目前目錄新增至其搜尋路徑)。

解決方案

  • 作為模組執行: 使用python -m package.subpackage1.moduleX 將moduleX 作為模組運行,允許相對導入。
  • 放在其他地方:將使用 moduleX 的任何腳本移到套件目錄之外的位置,從而在這些目錄中啟用相對導入腳本。

註解

  • 套件目錄必須可以在 Python 的搜尋路徑中存取。
  • 在 Python 2.6 中,package 屬性也會影響套件解析模組。

以上是如何避免Python中「嘗試在非套件中進行相對導入」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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