絕對匯入:從要匯入檔案的頂級包開始寫起
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中的匯入,尤其是絕對和相對匯入。在本教程中,你將了解兩者之間的差異,以及它們的利弊。我們立即開始吧!你需要...