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