Python的包的相對導入的深入理解和總結


之前在引用Python包的時候經常會出現各種各樣的錯誤,網上找了許多方法感覺都解釋的不是特別清楚,當然問題還是解決了,但也是稀里糊塗懵懵懂懂的解決的,后來自己實踐了一下,test了一下,竟然搞懂了。

下面就分享一下,其實很簡單,總結起來就一句話:一切包的相對導入都是在主程序所在目錄之下進行的,不能導入它的上一級目錄中的包。【如果你現在還沒有解決你的問題或者對這方面還是個小白一樣的話,請看看這個博主的一篇博客:https://www.cnblogs.com/ArsenalfanInECNU/p/5346751.html#4316316

首先我創建了一個實驗目錄,如圖:

在Python IDLE中運行main.py,運行正常,結果如下:

這里,主程序是main.py,是我們第一個打開的程序,我們的一切import、from都是在main.py所在的目錄下進行的,也就是一切相對導入都是在主程序所在的目錄下進行的。下面我們把tom.py作為主程序打開,看看結果如何:

第一行代碼有誤,顯然此時tom.py作為主程序時不能用from . import ***來導入同一級目錄下的文件,若此時想要用tom.py導入同一級目錄下的tombrother.py,刪去from . 就好了,直接用import tombrother就可以了,結果如下:

我們可以看到,沒有提示引入tombrother有誤,提示的錯誤是No module named "Kate",就是沒有找到Kate這個模塊,這是因為,Kate在tom.py所在目錄的外面,而此時,tom.py是主程序,所以Python不會去索引主程序目錄外的目錄去尋找這個Kate文件夾,也就不會找到kate.py,這才導致程序出錯。(當然如果你把tets目錄放在了系統的環境變量中就要另外說了)

所做的這些都是在向大家實踐並檢驗“一切包的相對導入都是在主程序所在目錄之下進行的,不能導入它的上一級目錄中的包”這句話。

以上就是我對Python的包的相對導入的理解,希望可以幫到一頭霧水的你。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM