python缺少标准库_干货分享:Python如何自动导入缺失的库
很多同學(xué)在寫Python項(xiàng)目時(shí)會(huì)遇到導(dǎo)入模塊失敗的情況:ImportError: No module named 'xxx'或者M(jìn)oduleNotFoundError: No module named 'xxx'。導(dǎo)入模塊失敗通常分為兩種:一種是導(dǎo)入自己寫的模塊(即以 .py 為后綴的文件),另一種是導(dǎo)入三方庫(kù)。接下來(lái)就給大家簡(jiǎn)單討論一下。
干貨分享:Python如何自動(dòng)導(dǎo)入缺失的庫(kù)
1、導(dǎo)入自己寫的模塊
在每一個(gè)運(yùn)行的Python程序當(dāng)中,都維護(hù)了一套sys文件,在這里面的path變量里,存儲(chǔ)了在當(dāng)前程序中導(dǎo)入模塊時(shí)候?qū)ふ业穆窂?。path是一個(gè)列表,里邊存儲(chǔ)了多個(gè)路徑,這些路徑是如果我們進(jìn)行import模塊操作的時(shí)候,Python會(huì)從這個(gè)路徑從第一個(gè)開始到最后一個(gè)一個(gè)一個(gè)路徑去找我們的模塊,直到找了或者都沒找到,再拋出異常。
如果我們自己寫的模塊放在奇怪的地方,在程序中import自然是無(wú)法為導(dǎo)入的。這時(shí)我們可以向sys.path這個(gè)列表的第一個(gè)位置里插入一個(gè)路徑,就是我們自己編寫的模塊存放的位置,這樣Python再找的時(shí)候就能找到了。
2、Python導(dǎo)入第三方庫(kù)
解決導(dǎo)入Python庫(kù)失敗的問題,其實(shí)關(guān)鍵是在運(yùn)行環(huán)境中裝上缺失的庫(kù)(注意是否是虛擬環(huán)境),或者使用恰當(dāng)?shù)奶娲桨?。這個(gè)問題又分為三種情況:
1)單個(gè)模塊中缺失的庫(kù)。
在編寫代碼的時(shí)候,如果我們需要使用某個(gè)三方庫(kù)(如 requests),但不確定實(shí)際運(yùn)行的環(huán)境是否裝了它,那么可以這樣:
try:
import requests
except ImportError:
import os
os.system('pip install requests')
import requests
這樣寫的效果是,如果找不到requests庫(kù),就先安裝再導(dǎo)入。
如果真找不到兼容的標(biāo)準(zhǔn)庫(kù),也可以自己寫一個(gè)模塊(如my_json.py),實(shí)現(xiàn)想要的東西,然后在except語(yǔ)句中導(dǎo)入它。
try:
import simplejson as json
except ImportError:
import my_json as json
2)整個(gè)項(xiàng)目中缺失的庫(kù)。
有一個(gè)項(xiàng)目,想要部署到新的機(jī)器上,它涉及很多三方庫(kù),但是機(jī)器上都沒有預(yù)裝,該怎么辦?
對(duì)于一個(gè)合規(guī)的項(xiàng)目,按照約定,通常它會(huì)包含一個(gè)“requirements.txt ”文件,記錄了該項(xiàng)目的所有依賴庫(kù)及其所需的版本號(hào)。這是在項(xiàng)目發(fā)布前,使用命令pip freeze > requirements.txt生成的。使用命令pip install -r requirements.txt (在該文件所在目錄執(zhí)行,或在命令中寫全文件的路徑),就能自動(dòng)把所有的依賴庫(kù)給裝上。
如果項(xiàng)目不合規(guī),或者由于其它倒霉的原因我們沒有這樣的文件,只能把項(xiàng)目跑起來(lái),等它出錯(cuò),遇到一個(gè)導(dǎo)庫(kù)失敗,就手動(dòng)裝一個(gè),然后再跑一遍項(xiàng)目,遇到導(dǎo)庫(kù)失敗就裝一下,如此循環(huán)。
3)自動(dòng)導(dǎo)入任意缺失的庫(kù)
在不修改原有的代碼的情況下,在不需要“requirements.txt”文件的情況下,自動(dòng)導(dǎo)入所需第三方庫(kù)的方法有三個(gè):
·可以用try...except 方式,實(shí)現(xiàn)簡(jiǎn)單的三方庫(kù)導(dǎo)入或者替換;
·已知全部缺失的依賴庫(kù)時(shí)(如 requirements.txt),可以手動(dòng)安裝;
·利用sys.meta_path,可以自動(dòng)導(dǎo)入任意的缺失庫(kù)。
總結(jié)
以上是生活随笔為你收集整理的python缺少标准库_干货分享:Python如何自动导入缺失的库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑白棋游戏水平(2)--pytorch剪
- 下一篇: python入门必备知识_python入