Python离线环境依赖包部署方案
内网环境下Python依赖包的完整离线安装流程
适用于无法连接互联网的目标机器(B主机),通过已联网主机(A主机)预先打包所有依赖,实现安全、高效的离线部署。
环境前提
- 两台主机的Python版本必须完全一致(包括主版本、次版本及架构,如3.10.12 x64)
- 目标机已安装嵌入式Python(Embeddable Distribution)
主机角色说明
| 主机 | 用途 | 示例路径 |
|---|---|---|
| A主机 | 联网源机,用于下载和打包依赖 | C:\Users\user\source |
| B主机 | 内网目标机,无网络访问权限 | C:\Users\user\destination |
第一阶段:在联网主机(A)准备离线包
- 进入项目目录并激活虚拟环境
cd C:\Users\user\source\test<br>.\Scripts\Activate.ps1
- 导出依赖清单
pip freeze > requirements.txt
- 下载所有依赖包(仅二进制文件)
mkdir offline_pkgs<br>pip download -r requirements.txt -d offline_pkgs<br>pip download pip setuptools wheel -d offline_pkgs --only-binary=all
确保生成的文件夹中仅包含`.whl`格式文件,避免因缺少编译工具导致安装失败。
- 传输至目标主机
将offline_pkgs文件夹与requirements.txt复制到B主机指定目录:
C:\Users\user\destination\offline_pkgs\
C:\Users\user\destination\requirements.txt
第二阶段:在内网主机(B)完成环境搭建
假设嵌入式Python已解压至:
C:\Users\user\destination\python310\
- 启用site-packages支持
编辑文件:
C:\Users\user\destination\python310\python310._pth
确保内容如下(取消注释最后一行):python310.zip . Lib\site-packages import site
修改后关闭所有终端,重新打开PowerShell以使配置生效。
- 获取安装脚本
在A主机下载 get-pip.py 并复制到B主机:
C:\Users\user\destination\get-pip.py - 离线安装核心工具链
cd C:\Users\user\destination<br>python310\python.exe get-pip.py --no-index --find-links=offline_pkgs
该命令将从本地文件夹安装pip、setuptools、wheel等基础组件。
- 验证pip是否可用
python310\python.exe -m pip --version
预期输出应显示类似:
pip 26.0.1 from C:\Users\user\destination\python310\Lib\site-packages\pip (python 3.10) - 安装项目依赖
python310\python.exe -m pip install --no-index --find-links=offline_pkgs -r requirements.txt
所有包将从本地缓存安装,不会尝试联网。 - 可选:验证安装结果
python310\python.exe -m pip list<br>python310\python.exe -c "import your_main_module; print('Success!')"
常见问题排查
| 问题现象 | 解决方案 |
|---|---|
| Python版本不匹配 | 确保A/B主机使用相同版本的Python(含位数) |
| 出现源码包安装失败 | 始终添加 --only-binary=all 参数 |
| 提示找不到pip模块 | 检查 python310._pth 是否正确启用了 import site |
| 包未找到或平台不兼容 | 确认 offline_pkgs 中存在对应平台的 .whl 文件(如 win_amd64) |