1. 程式人生 > >7行代碼,徹底告別python第三方包import導入問題!

7行代碼,徹底告別python第三方包import導入問題!

ges pyton containe 保存 txt 系統 img 統一 module

最近有不少小夥伴咨詢關於pyton第三方包導入的問題,今天我們就來聊聊第三方包導入那些事。

隨著對python學習的漸入臻境,越來越多的小夥伴們開始導入自己所需的第三方包,實現各種各樣的功能。但是,他(她)們遇到了一個非常煩惱的問題

自己用pip已經下載好的第三方包,import總是報錯,顯示沒有該moudle.

技術分享圖片pip顯示scipy模塊已安裝好

但在pycharm裏,我們import導入時,編輯器卻報錯,告訴我們沒有這個module!

技術分享圖片

這是為什麽呢?

原來,python在import導入第三包時,會默認搜索系統模塊下的sys.path路徑。而sys.path是個列表對象,我們可通過簡單的打印語句顯示查看我們的import導入路徑。

技術分享圖片

而pip下載後的第三方包都統一放在lib下的site-packages文件夾下。

技術分享圖片

與我們打印出的import路徑對比,不難發現,我們的import路徑中並沒有sit-packages的路徑位置。所以,即使我們用pip下載好第三方包在本地,import的搜索路徑中沒有這個位置,編輯器當然就會報錯。

找到問題的發生原因後,我們便可以開始解決問題了。思路就是:將第三方包的路徑添加到import的默認搜索路徑中。而sys.path又是個列表對象,我們通過append( )方法就可實現我們的需求,到此問題便可迎刃而解! 為使大家能夠清晰地認識,這裏用了print語句輸出了之前的路徑,大家實際操作中大可不必如此。了解原理即可。即使算上print語句,我們的有效代碼也只有7行! 代碼如下所示: 技術分享圖片

從輸出結果中我們可以看到第三方包site-packages的路徑已成功加入import的搜索路徑。

技術分享圖片

但是當重啟編輯器時,會發現添加的路徑已消失。可見append方法只能對當前有效,退出後便會失效!

那麽,我們怎麽永久添加到sys.path路徑下? 我們可以通過新建.pth文件來實現。

在前面程序輸出的結果中我們可以看到,D盤中我們也有一個site-packages的路徑。這是因為,為避免文件雜亂,將pycharm的項目沒有建在pyhton默認目錄,而是更改到了D盤的“python演練場”。

技術分享圖片

我們找到D盤--python演練場--venv---lib---site-packages文件夾,並在其中新建文本文檔。

技術分享圖片

在新建的文本中,寫入我們“pip下載到的第三方文件庫site-packages的”路徑位置。

技術分享圖片

將文本保存後,我們將文件改為“mypath.pth"。註意:最後,一定要將txt格式的改為pth,否則python無法識別。

技術分享圖片

之後,我們便可以”一勞永逸“地import引入pip下載的第三方包了,當然重要的是,這種方法還可以引入你自己根據你的需求寫的實用python腳本了。我們引入scipy第三包,可以明顯地看到,編輯器已為我們自動補全了。

技術分享圖片

這裏用的是python3.6和pycharm3.x。

7行代碼,徹底告別python第三方包import導入問題!