无网络环境下怎么离线安装Python的pip工具
详细讲解在没有外网连接的环境下如何离线安装Python的pip包管理工具,涵盖内置ensurepip模块快速启用、get-pip离线物料安装及应急部署方案与环境验证。
在企业内网服务器、隔离实验机或保密开发环境中,新部署的 Python 环境往往因为没有网络连接而无法直接在线安装扩展。如果安装 Python 时未勾选安装 pip,或者使用了精简版的基础镜像,就会遇到没有 pip 可用的情况。在无网络环境下,安装 pip 只有两条解决路径:一是优先检查当前 Python 是否内置了离线自举模块 ensurepip;若没有内置,则需要在有网络的电脑上预先下载 get-pip.py 脚本及配套的 Wheel 轮子文件,拷贝至离线机器完成本地安装。
一、离线安装路径判断与选择
在开始寻找外部安装包之前,先要明确离线目标机上的 Python 版本和安装完整度。不同发行版本的 Python 在打包时策略不同,部分安装包虽然没有默认生成可执行的 pip 命令,但标准库中已经携带了离线安装镜像。
通过上图可以看到,判断的核心分界点是 ensurepip 模块是否存在。如果目标机器内置了该模块,可以免去跨网络传输文件的繁琐步骤。
二、方法一:使用内置的 ensurepip 模块(零外部依赖)
Python 3.4 及以后的官方标准安装包中,内置了一个名为 ensurepip 的标准库模块。它的作用正是在不访问外网的情况下,将 Python 内置绑定的 pip 释放并安装到当前环境中。
1. 检查模块是否可用
在离线机器的终端(Windows 下为 CMD 或 PowerShell,Linux 下为 Bash)中输入:
python -m ensurepip --version
若命令行返回类似 ensurepip 23.2.1 的版本号信息,说明模块完整存在;若返回 No module named ensurepip,则说明当前系统的 Python 经过精简剔除了该模块(常见于 Ubuntu/Debian 默认的轻量 python3 包),需转用下文的方法二。
2. 执行内置安装命令
确认模块存在后,直接运行以下命令安装 pip:
python -m ensurepip --default-pip
--default-pip 参数指示系统在安装时,额外创建名为 pip(以及 pip3 或 pip3.x)的可执行软链接或可执行入口文件,方便后续直接在终端中敲击 pip 运行。
执行完成后,终端会显示类似如下的解包和写入日志:
Looking in links: c:\users\admin\appdata\local\temp\tmp123456
Processing c:\users\admin\appdata\local\temp\tmp123456\setuptools-65.5.0-py3-none-any.whl
Processing c:\users\admin\appdata\local\temp\tmp123456\pip-23.2.1-py3-none-any.whl
Installing collected packages: setuptools, pip
Successfully installed pip-23.2.1 setuptools-65.5.0
三、方法二:使用 get-pip.py 配合离线 Wheel 文件(通用标准方案)
当离线机器上的 Python 缺乏内置的 ensurepip 时,官方推荐的跨网络部署方式是借助 get-pip.py 脚本完成离线引导。需要注意的是,官方的 get-pip.py 默认会主动请求 PyPI 在线下载 pip,在无网络机器上直接运行该脚本会报连接超时错误。因此,必须将安装所需的 Wheel 文件一并下载并拷贝。
1. 在有外网的电脑上准备物料
首先在能够联网的机器上建立一个临时工作目录(例如 pip_offline),下载引导脚本及所需的 wheel 包。注意:联网机器上的 Python 主版本(如 Python 3.9、3.10、3.11)最好与离线机器保持一致,以防下载到不兼容的依赖。
在联网机器的终端执行以下操作:
# 创建存放目录
mkdir pip_offline && cd pip_offline
# 1. 下载官方引导安装脚本 get-pip.py
# 可以使用 curl、wget 或者直接在浏览器中打开保存
curl -O https://bootstrap.pypa.io/get-pip.py
# 2. 下载 pip、setuptools 和 wheel 的离线安装包到当前目录
pip download pip setuptools wheel -d .
pip 和 setuptools 的 Wheel 包通常命名为 pip-xx.x.x-py3-none-any.whl,后缀中的 none-any 表明它们是纯 Python 代码构建的通用轮子包,可以跨 Windows、Linux 和 macOS 平台直接通用。
2. 传输物料到离线机器
下载完成后,pip_offline 目录中应包含 4 个核心文件:
get-pip.pypip-<version>-py3-none-any.whlsetuptools-<version>-py3-none-any.whlwheel-<version>-py3-none-any.whl
将该目录打包,通过移动存储介质或安全中转通道拷贝到离线机器中,解压放置到任意本地路径(例如 /opt/pip_offline 或 Windows 上的 D:\pip_offline)。
3. 在离线机器上执行离线安装
在离线机器上进入放置物料的目录,执行以下核心安装命令:
# 进入离线物料目录
cd /opt/pip_offline
# 执行离线安装,务必带上 --no-index 和 --find-links
python get-pip.py --no-index --find-links=.
运行该命令后,get-pip.py 会自动解析 --find-links 指定路径中的轮子包,直接完成安装而不会尝试访问外网,屏幕将输出如下安装成功信息:
Looking in links: .
Processing ./pip-23.3.1-py3-none-any.whl
Processing ./setuptools-68.2.2-py3-none-any.whl
Processing ./wheel-0.41.2-py3-none-any.whl
Installing collected packages: wheel, setuptools, pip
Successfully installed pip-23.3.1 setuptools-68.2.2 wheel-0.41.2
四、方法三:解包 Wheel 或源码手动部署(无引导脚本应急方案)
在极少数严苛受限的环境下,例如跳板机禁止执行未知脚本,或者 get-pip.py 运行时报错,还可以直接利用 Python 能够将 Wheel 作为模块运行的特性,或者通过解压 Wheel 完成应急安装。
1. 直接将 Wheel 文件作为 Python 模块执行
pip-*.whl 本质上是一个经过特殊打包的 Zip 归档文件,内部包含可执行入口。在离线机器上,直接使用 Python 解释器执行该文件并安装自身:
python pip-23.3.1-py3-none-any.whl/pip install --no-index pip-23.3.1-py3-none-any.whl
该命令通过加载包内的 pip 代码,向当前的 site-packages 目录安装 pip 本体。如果提示缺少 setuptools,同样在命令末尾加上 setuptools-*.whl 一起安装。
2. 解压轮子文件到 site-packages(直接拷贝法)
如果上述命令依然受限,可以使用 Python 自带的 zipfile 模块直接将 .whl 文件解压到 Python 库目录下:
# 查询当前 Python 的全局库目录位置
python -c "import site; print(site.getsitepackages())"
# 使用 zipfile 模块将 pip 轮子解压至 site-packages
python -m zipfile -e pip-23.3.1-py3-none-any.whl /usr/local/lib/python3.9/site-packages/
解压后,虽然没有系统级的可执行脚本 pip,但你可以立即通过 python -m pip <命令> 正常调用 pip 的所有功能。
五、安装验证与离线后续配置
不论采用上述哪种方式完成安装,都需要进行三项关键检查,确认 pip 已正确绑定到目标环境且运行正常。
1. 验证命令执行与版本
运行以下两条命令进行验证:
# 1. 验证模块级调用
python -m pip --version
# 2. 验证全局命令
pip --version
正常情况下,终端会输出类似以下内容:
pip 23.3.1 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
重点观察输出路径后括号中的 python 3.x 版本号,确保其指向的目标解释器完全一致。
2. 常见问题与解决办法
| 异常现象 | 根本原因 | 具体解决做法 |
|---|---|---|
bash: pip: command not found |
pip 可执行脚本所在目录未加入系统环境变量 PATH |
在 Linux 中将 ~/.local/bin 或 Python 的 bin 目录追加到 ~/.bashrc 中的 PATH;Windows 下将 Python\Scripts 添加至系统环境变量。 |
Permission denied 写入权限不足 |
非 root 或无管理员权限用户向全局系统目录写入文件受阻 | 在安装命令后加上 --user 参数,例如 python get-pip.py --no-index --find-links=. --user,将工具安装至用户个人主目录。 |
| 执行 pip 依然尝试连接 PyPI 超时 | 未添加 --no-index 导致 pip 默认发起远程网络查询 |
在无网络环境下后续使用 pip 安装任何库时,都必须附带 --no-index --find-links=<本地包目录> 参数。 |
3. 离线安装业务依赖包的后续使用
离线安装好 pip 之后,整个环境就具备了解析和安装 wheel 包的能力。后续在离线机器上部署项目依赖时,同样遵循这一模式:
- 在有网机器上执行:
pip download -r requirements.txt -d ./packages/下载全量依赖 wheel 文件; - 将
packages文件夹和requirements.txt拷贝至离线服务器; - 在离线服务器上执行:
pip install --no-index --find-links=./packages/ -r requirements.txt完成项目组件离线安装。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













