批处理一键安装所有离线的Python库
一、應(yīng)用背景
由于一些電腦不存在聯(lián)網(wǎng)環(huán)境,需要先在聯(lián)網(wǎng)的電腦中下載好離線的Python庫(kù)安裝包1,通常是whl或者zip格式,然后將資源文件拷貝到不聯(lián)網(wǎng)的電腦,用離線安裝包的格式進(jìn)行安裝。
有的庫(kù)安裝依賴關(guān)系復(fù)雜,需要按照特定的順序對(duì)一系列Python庫(kù)進(jìn)行安裝才能正確安裝。可以通過(guò)pip的--no-index --find-links=folder參數(shù)控制在本地搜尋依賴關(guān)系并完成安裝2。
眾所周知,用pip freeze命令可以凍結(jié)當(dāng)前環(huán)境的第三方庫(kù)狀態(tài),然后再在另一臺(tái)電腦上復(fù)刻環(huán)境。但是有時(shí)候如果不想復(fù)刻一個(gè)環(huán)境內(nèi)的全部依賴包呢?
比如我只想安裝pandas數(shù)據(jù)分析庫(kù)、wxPythonGUI圖形庫(kù)、requests網(wǎng)絡(luò)分析庫(kù),或者只安裝其中的幾個(gè)?為每一個(gè)庫(kù)建立一個(gè)requirements.txt然后依次安裝?那未免太麻煩了。
二、批量下載Python及依賴庫(kù)
使用pip download命令可以下載指定的Python庫(kù)及其依賴項(xiàng),-d參數(shù)可以控制下載到指定的文件夾。
一些常見(jiàn)的且依賴關(guān)系復(fù)雜的Python庫(kù):
:: GUI庫(kù) pip download -d wxpython wxpython:: 3D圖形庫(kù) pip download -d vtk vtk:: 數(shù)學(xué)庫(kù) pip download -d pandas pandas pip download -d matplotlib matplotlib pip download -d opencv opencv-python pip download -d sympy sympy pip download -d scipy scipy:: 網(wǎng)絡(luò)分析 pip download -d requests requests pip download -d bs4 bs4 pip download -d selenium selenium:: 辦公自動(dòng)化 pip download -d PyAutoGUI PyAutoGUI pip download -d pywin32 pywin32 pip download -d windnd windnd pip download -d pynput pynput:: 讀取文檔 pip download -d xlutils xlutils pip download -d docx python-docx:: 數(shù)據(jù)分析 pip download -d jieba jieba pip download -d xpinyin xpinyin pip download -d qrcode qrcode:: 打包工具 pip download -d PyInstaller PyInstaller:: 37個(gè)依賴庫(kù)! pip download -d akshare akshare:: 59個(gè)依賴庫(kù)! pip download -d jupyter jupyter三、批處理安裝Python庫(kù)
運(yùn)行上面的下載命令后,會(huì)在當(dāng)前文件夾生成一系列的文件夾,在這些文件夾中存有相應(yīng)庫(kù)的所有依賴包。
在這些文件夾同級(jí)別的路徑下,創(chuàng)建一個(gè)批處理文件,可以命名為auto_install.bat,內(nèi)容如下:
@echo off title Auto Wheels Installer (by lishixian) mode con cols=150 lines=30 & color b for /d %%i in (*) do (for /r %%j in (%%i\*.*) do (pip install %%j --no-index --find-links=%%i)) pause然后運(yùn)行,就可以將批處理文件所在目錄下的所有庫(kù)全部安裝完成了。
實(shí)際使用時(shí),可以將整個(gè)文件夾攜帶,拷貝到需要安裝的電腦上,移除不需要安裝的Python包文件。然后運(yùn)行批處理程序,就可以有選擇地復(fù)刻需要的Python包環(huán)境。
簡(jiǎn)單解讀一下這段批處理命令3,這是一個(gè)雙層循環(huán):
第一層循環(huán)
for /d %%i in (*) do (...)通過(guò)/d開(kāi)關(guān),對(duì)當(dāng)前目錄的所有文件夾進(jìn)行遍歷,文件夾路徑存儲(chǔ)到%%i中,然后執(zhí)行do中的命令。
第二層循環(huán)
for /r %%j in (%%i\*.*) do (...)通過(guò)/r開(kāi)關(guān),對(duì)%%i目錄中的所有文件進(jìn)行遍歷,文件路徑存儲(chǔ)到%%j中,然后執(zhí)行do中的命令。
內(nèi)層命令
pip install %%j --no-index --find-links=%%i對(duì)遍歷到的每一個(gè)文件%%j,嘗試進(jìn)行pip安裝,在%%i路徑中查找安裝包的依賴關(guān)系庫(kù)。由于文件夾中的內(nèi)容是通過(guò)之前的pip download -d path package建立的,所以該目錄下必然存在該安裝包的全部依賴庫(kù),所以可以順利完成安裝。
四、CMD一鍵完成版
CMD的命令語(yǔ)法和批處理略有不同,可以這樣寫(xiě):
for /r %i in (*) do pip install "%i" --no-index --find-links="%~pi"五、pip配置文件永久生效
運(yùn)行命令打開(kāi)或新建pip配置所在文件:
notepad %HOMEPATH%/pip/pip.ini加入段落4:
[install] no-index = true find-links = D:/simple之后使用pip install <name>的時(shí)候,都會(huì)從本地的D:/simple文件夾中查找名為name的庫(kù)及相關(guān)依賴項(xiàng)。
https://blog.csdn.net/Enceladuce/article/details/112471440 ??
https://blog.csdn.net/excelNo1/article/details/117733718 ??
https://blog.csdn.net/annita2019/article/details/122908812 ??
https://www.zhihu.com/question/533375345/answer/2490885028 ??
總結(jié)
以上是生活随笔為你收集整理的批处理一键安装所有离线的Python库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 用python做dnf脚本好还是c语言好
- 下一篇: websocket python爬虫_p