python包的相對匯入和絕對匯入

2021-09-28 19:20:02 字數 1545 閱讀 8209

絕對匯入:從要匯入檔案的頂級包開始寫起

print(__package__)  # 列印出該檔案所在包的路徑
以下面所示專案檔案結構為例:

# ​​頂級包一般是專案資料夾中最上層的包,比如說a,b中的模組的頂級包就分別是a,b

# a1中

print(__package__) >> a

# b1中

print(__package__) >> b

# bb1中

print(__package__) >> b.bb # 則 bb1 的頂級包就是b

# csdn中

print(__package__) >> none # 該模組(.py檔案)直接在專案資料夾下,無頂級包,所以一般都是將入口檔案放在專案資料夾下,最外層一般不相互呼叫

# 絕對呼叫時

form b.bb import bb1 # 呼叫bb1

相對匯入:

.  # 當前包

.. # 上一級包

... # 上上一級

# 在b1中匯入b2

form . import b2

# 在bb1中匯入b1

from .. import b1

注意:1. 入口檔案(即執行開始的檔案)不可使用相對匯入

# 執行a2.py相對呼叫同級的a1.py

錯誤原因:入口檔案在編譯時會被python自動命名成__main__,你是找不到 . 作為本級資料夾的

2. 絕對匯入一定要從頂級包開始

我一般都直接採用頂級呼叫(包內檔案層級較少的情況,而且我喜歡在模組中寫乙個自己的驗證程式,所以相對呼叫老是報1.的錯)

包內檔案不作入口檔案使用的話,完全可以在包內呼叫寫相對呼叫,比較簡潔方便

python 絕對匯入和相對匯入

今天在import自定義模組時遇到問題,在此記錄一下。假設檔案結構如下 project main.py utils a.py b.py 我想要實現乙個順序匯入main a b,即 main.py from utils import a a.py import b 然而在a.py報錯找不到b模組。因為...

python之絕對匯入和相對匯入

這兩個概念是相對於包內匯入而言的。包內匯入即是包內的模組匯入包內部的模組。當前資料夾下 環境變數pythonpaht中 sys.path中 匯入當前模組同級別的模組 匯入當前模組同級別包中的模組 不能匯入具體的 變數 函式 型別 import匯入 sub package init py tools....

Python中的絕對匯入和相對匯入

如果你做過有多個檔案的python專案,那麼你一定用過import語句。即使是對於有多個專案的python支持者來說,import也會讓人困惑!你可能正閱讀本文,因為希望更深入地了解python中的匯入,尤其是絕對和相對匯入。在本教程中,你將了解兩者之間的差異,以及它們的利弊。我們立即開始吧!你需要...