python的package import 以及相對匯入和絕對匯入
阿新 • • 發佈:2019-01-01
1、首先基本的概念可以參考書或者百度,我這裡是給出實踐說明,同時提供原始碼說明;
2、要注意:如果要將一個資料夾目錄當做package的話,必須要在該目錄下加一個__init__.py的檔案(注意是兩個下劃線連在一起__),否則將無法作為一個package;
3、程式的目錄結構如下:
3、謹記:執行應用程式的模組,不能使用相對匯入;比如a.py,打算執行該檔案,那麼該檔案檔名就會變成__main__,若使用相對匯入 也就是from .* 這種形式,就會出錯;因為當前的模組名改變後,直譯器認為相對路徑失效;
4、注意該工程是在testPythonPackageImport的目錄下開啟的;
5、當我們執行test21.py檔案的時候,檔案中打印出了sys.path,我們可以觀察到包含了路徑 xxx/testPythonPackageImport 和 xxx/testPythonPackageImport/top/test2
前者的出現原因應該是pycharm這個IDE自動幫我們把專案的目錄加進去了,後者的出現是因為是在該目錄下執行了test21.py檔案;
如果要增加搜尋路徑的話,可以在當前的已有的某個路徑下,新增字尾為.pth的檔案,在檔案中加入需要搜尋的路徑,python就會自動加入了;
6、關於執行out,說明相對匯入產生的錯誤:
out.py中匯入模組有兩種方式,一種是絕對匯入:import top.test1.test11 as test11
一種是相對匯入:from .top.test1 import test11
應該說這兩種都是正確的,但是當我們要直接執行out.py的時候,相對匯入就會發生錯誤,所以前面3中說了,要執行該檔案,必須使用絕對匯入;