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

最近有不少小伙伴咨詢小叮當(dāng)關(guān)于pyton第三方包導(dǎo)入的問題,今天我們就來聊聊第三方包導(dǎo)入那些事。

image.png

隨著對(duì)python學(xué)習(xí)的漸入臻境,越來越多的小伙伴們開始導(dǎo)入自己所需的第三方包,實(shí)現(xiàn)各種各樣的功能。但是,他(她)們遇到了一個(gè)非常煩惱的問題!

image.png

自己用pip已經(jīng)下載好的第三方包,import總是報(bào)錯(cuò),顯示沒有該moudle.

image.png

但在pycharm里,我們import導(dǎo)入時(shí),編輯器卻報(bào)錯(cuò),告訴我們沒有這個(gè)module!

image.png

這是為什么呢?

image.png

原來,python在import導(dǎo)入第三包時(shí),會(huì)默認(rèn)搜索系統(tǒng)模塊下的sys.path路徑。而sys.path是個(gè)列表對(duì)象,我們可通過簡(jiǎn)單的打印語句顯示查看我們的import導(dǎo)入路徑。

image.png

而pip下載后的第三方包都統(tǒng)一放在lib下的site-packages文件夾下。

image.png

與我們打印出的import路徑對(duì)比,不難發(fā)現(xiàn),我們的import路徑中并沒有sit-packages的路徑位置。所以,即使我們用pip下載好第三方包在本地,import的搜索路徑中沒有這個(gè)位置,編輯器當(dāng)然就會(huì)報(bào)錯(cuò)。

image.png

找到問題的發(fā)生原因后,我們便可以開始解決問題了。思路就是:將第三方包的路徑添加到import的默認(rèn)搜索路徑中。而sys.path又是個(gè)列表對(duì)象,我們通過append( )方法就可實(shí)現(xiàn)我們的需求,到此問題便可迎刃而解!

image.png

為使大家能夠清晰地認(rèn)識(shí),小叮當(dāng)這里用了print語句輸出了之前的路徑,大家實(shí)際操作中大可不必如此。了解原理即可。即使算上print語句,我們的有效代碼也只有7行!

image.png

代碼如下所示:

image.png
image.png

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

image.png

但是當(dāng)重啟編輯器時(shí),會(huì)發(fā)現(xiàn)添加的路徑已消失??梢奱ppend方法只能對(duì)當(dāng)前有效,退出后便會(huì)失效!

那么,我們?cè)趺从谰锰砑拥絪ys.path路徑下? 其實(shí),我們可以通過新建.pth文件來實(shí)現(xiàn)。

在前面程序輸出的結(jié)果中我們可以看到,D盤中我們也有一個(gè)site-packages的路徑。這是因?yàn)椋《.?dāng)為避免文件雜亂,將pycharm的項(xiàng)目沒有建在pyhton默認(rèn)目錄,而是更改到了D盤的“python演練場(chǎng)”。

image.png

我們找到D盤--python演練場(chǎng)--venv---lib---site-packages文件夾,并在其中新建文本文檔。

image.png

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

image.png

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

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

image.png

這里小叮當(dāng)用的是python3.6和pycharm3.x,如果你在操作過程中遇到了問題,盡可在評(píng)論區(qū)留言??吹胶蟊銜?huì)及時(shí)回復(fù)哦~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容