【环境安装】Linux离线环境安装python3

[复制链接]
发表于 2026-10-4 21:21:25 来自手机 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

生产服务器上常会遇到完全离线的环境——没有外网、yum 源也访问不了,这种情况下给机器装 Python 3,只能走离线包安装。本文以 CentOS 7(内核 3.10.0)离线安装 Python 3 为例,走一遍完整的落地流程:准备安装包、上传解压、编译安装、做软链接让 python 指向新版本、再离线补第三方包,每一步都给出可复制的命令和踩坑说明。

先确认系统环境

先看下内核和发行版信息,确认是离线环境、以及准备走哪条包路径。

[root@localhost]# cat /proc/version
Linux version 3.10.0-1160.102.1.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)) #1 SMP Tue Oct 17 15:42:21 UTC 2023

从输出能看出是 CentOS 7 的 x86_64 平台、GCC 4.8.5。这个信息很关键:编译 Python 3.10 需要检查一下 GCC 版本是否满足要求,太老的编译器会在 make 阶段报一堆看不懂的错误。

另外大部分 Linux 发行版自带 Python 2 环境(CentOS 7 通常是 2.7),系统工具链也依赖它,所以不能直接把老版本换掉,只能额外装一份 Python 3 再把软链接切过去。

准备 Python 安装包

在一台能上网的机器上,从 Python 官方站点下载对应版本的源码包,比如 3.10.14。选版本时注意两点:一是要和后续要装的第三方包兼容,二是尽量选已经比较稳定的补丁版本。

wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz

下载好之后再传给目标服务器。用 MobaXterm 这类 SSH 客户端可以直接把文件拖进窗口完成上传,也可以用 scp 走命令行,效果一样。传上去之后 cd 到压缩包所在目录,解压:

tar -zxvf Python-3.10.14.tgz

编译安装

解压后进入源码目录,configure 指定安装位置,再编译安装。

cd Python-3.10.14
./configure --prefix=/usr/local/python3
make && make install

三条命令按行执行,第三条是最耗时的,终端会刷出大量 Compiling…… 的滚动信息,耐心等它跑完,中途退出会让后面全部作废。--prefix 后面跟的就是最终安装位置,这里定为 /usr/local/python3,换成本机合适的目录也可以,但下面所有软链接路径要跟着改。

离线环境最大的风险就在这一步:Python 编译依赖 OpenSSL、zlib、readline、sqlite3 等开发库,平时这些头文件是通过 yum 装的 openssl-devel、zlib-devel 这类包,离线环境下装不了。解决办法是提前在一台同版本机器上下好这些 rpm,拷贝到离线机后用 yum localinstall *.rpm 本地安装,再重跑 configure 与 make。若 configure 阶段报 checking for xxx... configure: error,基本就是某个 devel 包缺了。

建立软链接

上一步跑完,Python 3 其实已经装好了,位置在 /usr/local/python3。但这时直接敲 python 弹出来的还是 2.7 版本,因为系统的 /usr/bin/python 软链接仍指向老版本。Windows 靠环境变量解决,Linux 靠软链接。

cd /usr/bin/
ls -il

ls -il 会显示节点号(inode)和链接指向,能看到 python、python2、python2.7 这几条之间的关系。目标很明确:让直接输入 python 时落到 Python 3 上。

sudo rm -rf /usr/bin/python
sudo ln -s /usr/local/python3/bin/python3.10 /usr/bin/python

三步走:先删掉已有软链接,再建一条指向 3.10 的新链接,然后 ls -il 复查并敲 python 验证。注意这里删的是软链接本身(rm -rf 加指向路径时务必确认没写成真实文件路径),老版本解释器本体还在 /usr/bin/python2 里,系统脚本照样能跑。

pip 的软链接类似:

sudo ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip

这条常见报错:ln: failed to create symbolic link '/usr/bin/pip': File exists。原因是系统里已经存在一条 pip 软链接,直接 ln 会被拒绝。两种处理:一是用 ln -sf 强制替换,二是先看清现有链接指向什么、确认无害后删掉再建。若报错后 pip list 仍能正常列出包,说明系统那条链接本身就能用,不必强改,按实际情况处理即可。

验证版本:

python --version
pip --version

正常会分别打印出 3.10.x 和对应的 pip 版本号,到这里 Python 安装就完成了。

离线安装第三方包

离线版 Python 装模块包,思路和装 Python 本身一致:在有网的机器上先下载好离线包,拷到目标机器再本地安装。模块包常见的两种形态是 tar.gz 源码包和 Linux 平台的 .whl 文件,记得要和 Python 版本号、以及 32/64 位平台对得上。

pip install xxx.whl
python setup.py install

整体流程就四步:

  • ① 在有网机器上下好离线包,模块可以从 PyPI 官网搜索对应的发布文件。
  • ② 把包拷进离线环境,tar -zxvf 解压后 cd 进目录。
  • ③ 执行 pip install . 或 python setup.py install 完成安装。
  • ④ 装完 import 一下验证,确认这个包在当前解释器里真的可用。

依赖多的包(比如带 C 扩展的科学计算库)离线时最容易卡在依赖链上,推荐用 pip download 一次性把依赖-all 全部抓下来,打包一起拷过去,再批量本地安装,能省掉大量来回。

坑位提醒

  • 别把系统 /usr/bin/python 整个替换成不存在的位置,很多系统脚本写死 python 两个字,链接一断整套工具链就废。
  • 用 rm -rf 删软链接时路径要写到链接本身,别少写或多写斜杠。
  • make 中途报错先看最上面第一条错误,通常指向缺某个 devel 包,不要被后面的刷屏干扰。
  • 编译前确认磁盘有足够空间,源码编译加上安装目录一般占几百 MB。
  • 离线环境里 pip 指向新版本后,老 pip 的用法(requirements 文件)照样有效,但注意 requirements 里的包版本要和当前 Python 兼容。

小结

离线装 Python 3 的完整链路就是:确认版本与依赖 → 传源码包 → 解压 → configure 指定 prefix → make && make install → ln -s 把 python/pip 指向新版本 → 离线补模块并 import 验证。核心难点从来不是编译本身,而是开发库和依赖包能不能在离线机上补齐,这两件事提前备好,剩下的就是跑命令等它结束。

qidao123.com企服评测-应用市场 编辑提示:本文为 Linux 离线环境部署 Python 3 的实操记录,命令均可在 CentOS 7 环境复现;替换系统软链接前请先备份原有链接指向,避免影响系统自带脚本。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表