当前位置:   article > 正文

批处理一键安装所有离线的Python库_pip批量安装离线包

pip批量安装离线包

一、应用背景

由于一些电脑不存在联网环境,需要先在联网的电脑中下载好离线的Python库安装1,通常是whl或者zip格式,然后将资源文件拷贝到不联网的电脑,用离线安装包的格式进行安装

有的库安装依赖关系复杂,需要按照特定的顺序对一系列Python库进行安装才能正确安装。可以通过pip--no-index --find-links=folder参数控制在本地搜寻依赖关系并完成安装2

众所周知,用pip freeze命令可以冻结当前环境的第三方库状态,然后再在另一台电脑上复刻环境。但是有时候如果不想复刻一个环境内的全部依赖包呢?

比如我只想安装pandas数据分析库、wxPythonGUI图形库、requests网络分析库,或者只安装其中的几个?为每一个库建立一个requirements.txt然后依次安装?那未免太麻烦了。

二、批量下载Python及依赖库

使用pip download命令可以下载指定的Python库及其依赖项,-d参数可以控制下载到指定的文件夹。

一些常见的且依赖关系复杂的Python库:

:: GUI库
pip download -d wxpython wxpython

:: 3D图形库
pip download -d vtk vtk

:: 数学库
pip download -d pandas pandas
pip download -d seaborn seaborn
pip download -d opencv opencv-python
pip download -d sympy sympy
pip download -d scipy scipy

:: 网络分析
pip download -d requests requests
pip download -d bs4 bs4
pip download -d selenium selenium

:: 办公自动化
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

:: 数据分析
pip download -d jieba jieba
pip download -d xpinyin xpinyin
pip download -d qrcode qrcode

:: 打包工具
pip download -d PyInstaller PyInstaller

:: 37个依赖库!
pip download -d akshare akshare

:: 59个依赖库!
pip download -d jupyter jupyter
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

三、批处理安装Python库

运行上面的下载命令后,会在当前文件夹生成一系列的文件夹,在这些文件夹中存有相应库的所有依赖包。

在这些文件夹同级别的路径下,创建一个批处理文件,可以命名为auto_install.bat,内容如下:

@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
  • 1
  • 2
  • 3
  • 4
  • 5

然后运行,就可以将批处理文件所在目录下的所有库全部安装完成了。

实际使用时,可以将整个文件夹携带,拷贝到需要安装的电脑上,移除不需要安装的Python包文件。然后运行批处理程序,就可以有选择地复刻需要的Python包环境

简单解读一下这段批处理命令3,这是一个双层循环:

第一层循环

for /d %%i in (*) do (...)
  • 1

通过/d开关,对当前目录的所有文件夹进行遍历,文件夹路径存储到%%i中,然后执行do中的命令。

第二层循环

for /r %%j in (%%i\*.*) do (...)
  • 1

通过/r开关,对%%i目录中的所有文件进行遍历,文件路径存储到%%j中,然后执行do中的命令。

内层命令

pip install %%j --no-index --find-links=%%i
  • 1

对遍历到的每一个文件%%j,尝试进行pip安装,在%%i路径中查找安装包的依赖关系库。由于文件夹中的内容是通过之前的pip download -d path package建立的,所以该目录下必然存在该安装包的全部依赖库,所以可以顺利完成安装。

四、CMD一键完成版

CMD的命令语法和批处理略有不同,可以这样写:

for /r %i in (*) do pip install "%i" --no-index --find-links="%~pi"
  • 1

五、单个库下载/安装版(待完善)

以指定PY38版本为例,新建一个download.bat的文件,内容如下,在命令行中输入download pkg_name即可快速下载该库对应的依赖包,并将所有文件放入同名文件夹内:

@echo off
py -3.8 -m pip download %1 -d %1
copy install.bat %1\install.bat
  • 1
  • 2
  • 3

以指定PY38版本为例,新建一个install.bat的文件,内容如下,双击打开即可将该文件夹名的同名库安装完成:

@echo off
for %%i in ("%cd%") do py -3.8 -m pip install %%~ni --upgrade --no-index --find-links .
pause
  • 1
  • 2
  • 3

六、pip配置文件永久生效

运行命令打开或新建pip配置所在文件:

notepad %HOMEPATH%/pip/pip.ini
  • 1

加入段落4

[install]
no-index = true
find-links = D:/simple
  • 1
  • 2
  • 3

之后使用pip install <name>的时候,都会从本地的D:/simple文件夹中查找名为name的库及相关依赖项。


  1. https://blog.csdn.net/Enceladuce/article/details/112471440 ↩︎

  2. https://blog.csdn.net/excelNo1/article/details/117733718 ↩︎

  3. https://blog.csdn.net/annita2019/article/details/122908812 ↩︎

  4. https://www.zhihu.com/question/533375345/answer/2490885028 ↩︎

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号