Python import的搜尋路徑和不可以import的解決方法 (On Linux)
阿新 • • 發佈:2021-10-26
參考:
2018年10月5日python相對引入和絕對引入詳解_i_can_do_it!-CSDN部落格_python 相對引用
首先說明:python中“模組”(Module)的概念就是.py檔案。
我們可以使用 import 語句來引入模組。當你匯入一個模組,Python 解析器對模組位置的搜尋順序是:
- 1、當前目錄(準確說就是當前執行的入口檔案所在的目錄)
- 2、sys.path中的每個目錄。
有說法說和PYTHONPATH以及什麼預設安裝路徑有關,沒有查證過。但是以上兩者一定包括。
因此,如果想將某個路徑加入搜尋目錄列表,就直接使用sys.path.appand(路徑)
另外一個常見的問題就是,import的模組和入口檔案在同一目錄,在windows下會無法import。(但是我在Linu下試了就可以)。
這樣的解決方法就是將模組放入一個目錄中,然後import 目錄.模組
import的本質就是將程式碼複製到當前檔案中。
舉例:
在專案的三級目錄下有一個print(os.listdir()).
當入口檔案呼叫到他的時候,列印的就是入口檔案所在的目錄的資訊,而不是三級目錄的資訊。可以體現這個本質。
另外,在一個專案的某個檔案中import的時候,始終是要將入口檔案所在目錄作為import的搜尋路徑。這一點當入口檔案所在目錄不是專案頂級目錄的時候可能會引起困難,解決方法是在入口檔案的第一二行(在import其他包之前)就sys.path.append(專案頂級目錄)。
另外,不推薦用相對引用,這個用起來比絕對引用麻煩很多。