Python离线安装包方法:无网络服务器装库的3步方案

在企业生产环境中,我们常常会遇到「无网络权限」的服务器场景——比如涉密系统、内网隔离设备、工业控制主机等,此时常规的 pip 在线安装依赖、官网下载完整安装包部署的方式完全失效。 离线部署的核心痛点,从来都是「轻量解释器+依赖可管理+可复用部署」,而 embed 版本 + + Pypi- 的组合,恰好完美解决了这三个痛点,既无需繁琐的环境配置,又能实现依赖的离线统一管理,还支持多设备批量部署,今天就带大家一步步吃透这套部署方案。
先提前说明适用场景:本文方案主打 环境(embed 版本对 适配最友好, 核心优化 部署体验),适合自动化脚本、轻量服务、数据分析工具等离线部署需求,尤其适合企业内网多台设备统一部署相同 环境,无需每台设备单独配置,大幅提升运维效率。
一、核心工具解析(为什么选这三者组合?)
很多人做离线部署会踩坑:要么用完整 安装包打包,体积庞大;要么用 打包单文件,依赖冲突频发;要么手动复制依赖,后续更新维护麻烦。而这套组合的优势的是「各司其职、协同互补」,先搞懂每个工具的作用,实操起来更顺畅。
1. embed 版本(轻量可移植的解释器)
embed(嵌入式版本)是官方提供的精简版 解释器,本质是一个压缩包,无需安装,解压即可使用,体积仅 10-20MB(相比完整安装包的 100+MB,轻量化优势明显)。它最大的特点是「可移植性极强」,可以直接复制到任意 设备,无需配置系统环境变量,且能独立运行 脚本,完美适配离线、无权限安装软件的场景。
注意:embed 版本默认不包含 pip,也不启用 site- 目录(第三方依赖安装目录),需要手动配置才能安装依赖,这也是我们需要搭配 和 pypi- 的原因之一。
2. (embed 版本的“增强工具”)
是一款专为 嵌入式环境设计的轻量级部署工具,核心作用是「简化 embed 版本的配置和打包流程」。它能自动识别 embed 版本的目录结构,帮我们自动配置 site- 路径、修复 pip 安装依赖的路径问题,还能将 embed 解释器、依赖包、 脚本打包成一个独立的可执行文件(或可分发目录),实现“一键部署、双击运行”,无需用户手动操作命令行。
相比手动配置 embed 版本, 能解决两个关键痛点:一是避免手动修改 ._pth 文件(embed 版本启用 site- 的核心配置文件)的出错概率;二是实现依赖包与解释器的绑定,确保离线环境下依赖不缺失、不冲突。
3. pypi-(本地离线依赖仓库)
pypi- 是一款轻量级的本地 PyPI 仓库工具,核心作用是「搭建离线的依赖包仓库」。我们可以在一台能联网的“跳板机”上,提前下载好所有需要的 依赖包(.whl 格式或 .tar.gz 格式),然后用 pypi- 搭建本地仓库,再将仓库目录复制到离线设备,后续在离线设备上通过 pip 直接从本地仓库安装依赖,无需再手动复制依赖包到 site- 目录,大幅简化依赖管理流程。
优势:支持多设备共享依赖仓库,后续新增依赖、更新依赖时,只需更新本地仓库,所有离线设备即可同步使用,无需每台设备单独下载、复制依赖,适合批量部署场景。
二、前置准备(联网跳板机操作,关键一步)
离线部署的核心是「提前在联网设备上准备好所有所需资源」,后续离线设备仅需复制资源、执行配置即可。我们需要准备的资源如下(所有资源均无需安装,下载/打包后复制到离线设备即可):
1. 下载 embed 版本访问 官网下载页面: for (仅需联网跳板机访问);向下滚动找到「 」区域,根据离线设备的系统架构(32 位/64 位)选择对应版本,建议选择 3.8+ 版本(兼容性更好),比如 -3.12.3-embed-amd64.zip;2. 下载 访问 项目仓库():(自行搜索最新版本),下载最新的 版本(通常是一个 .zip 压缩包,包含 .exe 启动器);-v1.1.5-exe.zip在 里面有很多版本提供选择。-vX.X.X-exe.zip 是C++源码,可以使用CMake自定义启动exe。3. 搭建 pypi- 本地仓库,下载所需依赖
这一步是核心,目的是提前下载好所有需要的依赖包,搭建本地仓库,后续离线设备可直接从仓库安装依赖。
在跳板机上,先安装 pypi-(仅跳板机需要): pip 在跳板机上新建「」文件夹(用于存放本地仓库的依赖包);启动 pypi- 本地仓库(临时启动,用于下载依赖): pypi- run -p 8080 -P . -a . ./ 说明:-p 8080 是指定端口,./ 是仓库目录,启动后跳板机本地可通过 :8080 访问仓库。下载所需依赖包到本地仓库(关键一步): 假设你的 脚本需要 、、numpy 等依赖,执行以下命令,将依赖包下载到 目录(从公共 PyPI 仓库下载,保存到本地): pip -d ./ numpy --index-url 说明:-d ./ 表示将依赖下载到指定目录,后面跟上需要的依赖包名称,可根据自己的需求添加;如果有 .txt 文件,可替换为 pip -d ./ -r .txt --index-url 。下载完成后,关闭 pypi-(Ctrl+C 终止进程);此时「」目录下会出现所有下载好的依赖包(.whl 或 .tar.gz 格式),本地仓库搭建完成。三、离线设备实操步骤 1: 解压
项目仓库中有很多现在成的版本:


例如选择一个:-py38-pyqt5.7z:嵌入式 环境 + PyQt5(完整版)解压,解压出来的目录结构大概如下,具体的内容介绍 .md 中说的非常清楚:


以下是一些我个人的修改:
1. 的基础环境外加第三方的库,我都运行放到了下。
2. site- 存放我自己写的项目文件。
要满足这样的修改,需要使用 -vX.X.X-exe.zip 的源码中进行一些修改,然后从新编译生成启动exe:
原始:

修改后:

大概意思就是原始可加载到的环境在这些路径下:【lib, site-, 】
修改以后可以加载到的环境路径:【lib, user-, , /Lib, /Lib/site-】
此时,就将运行环境和自己的生成环境隔离开方便操作。还可根据具体需要修改启动器的图标。
步骤 2: embed版本解压
1. 解压下载好的 embed版本压缩包
2. 找到解压目录中的._pth文件(XX代表版本号),取消注释相关行以启用标准库路径。
# Uncomment to run site.main() automatically
import site
3. 安装pip(此时最好有外网)
打开cmd,进入到解压文件夹目录下,并运行以下命令:
curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python.exe get-pip.py
命令结束后,文件夹下会生成两个文件夹Lib和,以后使用pip安装的第三方库的,都会默认安装到这里。
4. 配置pip源,在目录下新建 pip.ini 文件,此处应该配置我们之前搭建好的 pypi- 本地仓库的地址,以下仅为举例:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
5. 安装好pip以后,因为pip安装有可能是tar包无法安装,所以建议先安装上、wheel插件。
最后,整理了本文用到的所有工具下载链接(均为官方渠道,安全可靠),需要的朋友可直接获取:
























