使用 pip 离线复制 python 运行环境

本文最后更新于:2022年8月10日 上午

python 运行时会有不同环境需求,在其他机器部署时需要重新配置python环境,当需要离线部署时可以使用pip的离线复制环境的功能。

工作思路

  1. 获取环境所需的库和对应版本
  2. 确定运行平台(Linux,Windows)
  3. 在指定平台下载库的离线包
  4. 将库列表与离线包迁移到新机器
  5. 在新机器上安装python
  6. 安装离线包
  7. 程序调试

具体操作流程

获取环境所需的库和对应版本

  • 在源机器安装pipreqs
1
pip install pipreqs

pipreqs可以帮你找到当前项目的所有组件及其版本。

  • 获取库与版本
1
2
pipreqs ./  # 报错就执行下面这条
pipreqs ./ --encoding=utf-8

成功后会在当前目录生成 requirements.txt文件

例如:

1
2
3
4
5
6
7
8
9
numba==0.53.1
matplotlib==3.3.2
opencv_python_headless==4.5.1.48
pynvml==8.0.4
tqdm==4.49.0
numpy==1.19.2
pathlib2==2.3.5
line_profiler==3.1.0
Pillow==8.2.0

下载库的离线包

  • 获取requirements.txt后下载对应包,使用pip download命令将包存入packages文件夹
1
2
mkdir packages
pip download -r requirements.txt -d e:/packages/

目标路径不是绝对路径有可能出问题

也可以不用手动创建文件夹,pip会自动创建对应文件夹

  • 也可以下载指定的包
1
pip download numpy -d e:/packages/

**注意:**这个命令如果中途遇到问题报错没有执行完则不会将所有之前下载的包放到目标文件夹,需要逐个解决问题后才会移动到指定位置

Tips:建议将pip源换成阿里云,成功率高很多

上述包文件下载后的结果

安装离线包

1
pip install --no-index --find-links=e:/packages/ -r requirements.txt
选项 含义
–no-index 忽略包索引(只查看–find-links)
–find-links 指向 URL,html 文件 tar.gz,whl 或者目录,不支持指向VCS项目URL的链接
–ignore-installed 忽略已安装的软件包,覆盖它们

在线重现环境

在有网络的情况下可以使用离线生成的 requirements.txt 文件重建新环境

1
pip install -r requirements.txt

pip 会逐个安装文件中指定版本的包

参考资料


使用 pip 离线复制 python 运行环境
https://www.zywvvd.com/notes/environment/pip/pip-env-install-off-line/pip-env-install-off-line/
作者
Yiwei Zhang
发布于
2021年4月15日
许可协议