假设已经把 python-3.9.x.tar.xz 拷贝到 /tmp
sql
wget https://www.python.org/ftp/python/3.9.20/Python-3.9.20.tgz
cd /tmp
tar -xf Python-3.9.x.tar.xz
cd Python-3.9.x
配置安装路径,避免覆盖系统自带 python3
sql
./configure --prefix=/opt/python3.9 --enable-optimizations
make -j$(nproc)
make install
添加软连接(可选)
sql
ln -s /opt/python3.9/bin/python3.9 /usr/local/bin/python3.9
ln -s /opt/python3.9/bin/pip3.9 /usr/local/bin/pip3.9
查看版本
sql
python3.9 --version
pip3.9 --version
1️⃣ 在外网/本地机器导出已有包
假设你本地的 Python 3.9 是你常用环境:
激活你的本地 Python 3.9 环境
sql
python3.9 -m pip freeze > requirements.txt
2️⃣ 下载离线 .whl 包(本地/外网)
使用 pip download 下载所有依赖到一个目录:
sql
mkdir -p /tmp/packages
pip download -r requirements.txt -d /tmp/packages
这会把 requirements.txt 中所有包及依赖下载到 /tmp/packages
注意选择合适的平台的 .whl(Linux/Windows/macOS)
💡 小提示:如果内网机器平台和外网机器不同,需要确保下载的 wheel 平台一致(比如 Linux x86_64)。
3️⃣ 拷贝到内网服务器
假设内网服务器路径 /opt/python3.9-packages
sql
scp -r /tmp/packages 内网服务器:/opt/python3.9-packages
scp requirements.txt 内网服务器:/opt/python3.9-packages
4️⃣ 在内网 Python 3.9 下离线安装
使用内网 Python 3.9
sql
cd /opt/python3.9-packages
python3.9 -m pip install --no-index --find-links=. -r requirements.txt
解释:
-
--no-index:不去 PyPI 网络安装
-
--find-links=.:从当前目录查找 .whl 文件
-
-r requirements.txt:安装指定的包及版本
5️⃣ 验证
sql
python3.9 -m pip list
会显示安装的包及版本
系统默认 Python 3.7 不受影响
⚡ 小技巧
多个包直接下载:
sql
pip download numpy pandas requests -d /tmp/packages
特定平台(Linux x86_64):
sql
pip download --platform manylinux2014_x86_64 --python-version 39 --only-binary=:all: -r requirements.txt -d /tmp/packages
升级 pip(在内网先准备好离线包):
sql
pip download pip -d /tmp/packages
python3.9 -m pip install --no-index --find-links=/tmp/packages pip