在 CentOS 系统中,尤其是 CentOS 7 这类长期支持版本,其默认自带的 Python 版本通常是 2.7,随着 Python 2 的生命周期结束,越来越多的项目和应用依赖于 Python 3.x,有时,由于项目兼容性或特定环境要求,我们需要安装一个精确的旧版本,Python 3.6.2,本文将详细介绍如何在 CentOS 系统上,通过从源码编译的方式,干净、可控地安装 Python 3.6.2。
从源码编译安装(推荐)
从源码编译是安装特定版本 Python 最灵活、最彻底的方法,它允许我们自定义安装路径,优化编译选项,并且不会干扰系统的默认 Python 环境。
安装编译依赖
在开始编译之前,必须确保系统已安装必要的开发工具和库,这些依赖项是 Python 解释器及其许多标准模块正常工作所必需的。
打开终端,执行以下命令来安装开发工具组及相关的开发库:
sudo yum groupinstall -y "Development Tools" sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
这条命令会一次性安装所有编译 Python 所需的依赖,避免了在后续步骤中因缺少库而报错。
下载并解压 Python 源码
从 Python 官方网站下载 3.6.2 版本的源码压缩包。
# 进入一个临时目录 cd /tmp # 下载 Python 3.6.2 源码 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz # 解压下载的压缩包 tar -xzf Python-3.6.2.tgz
解压后,会生成一个名为 Python-3.6.2
的目录,包含了所有源代码文件。
编译与安装
进入解压后的目录,执行配置、编译和安装的“三步曲”。
# 进入源码目录 cd Python-3.6.2 # 配置安装选项 ./configure --prefix=/usr/local/python3.6 --enable-optimizations
这里的关键参数是:
--prefix=/usr/local/python3.6
:指定 Python 的安装目录,将其安装到独立路径下,便于管理和卸载,同时避免了与系统自带的 Python 版本冲突。--enable-optimizations
:启用优化选项,这会通过 Profile Guided Optimization (PGO) 提升Python的运行性能,但会增加编译时间。
配置完成后,开始编译:
make -j4
-j4
参数表示使用 4 个核心并行编译,可以根据你的 CPU 核心数适当调整以加快编译速度。
编译成功后,执行安装命令。强烈建议使用 altinstall
而非 install
:
sudo make altinstall
make install
会覆盖系统默认的 python3
和 pip3
命令,可能导致系统管理工具(如 yum
)出错,而 make altinstall
会创建带有版本号的命令,如 python3.6
和 pip3.6
,从而安全地与系统环境共存。
安装后配置与验证
安装完成后,为了方便使用,我们可以为 python3.6
和 pip3.6
创建软链接到系统可执行文件路径(如 /usr/bin
)。
sudo ln -s /usr/local/python3.6/bin/python3.6 /usr/bin/python3.6 sudo ln -s /usr/local/python3.6/bin/pip3.6 /usr/bin/pip3.6
验证安装是否成功:
python3.6 -V # 预期输出:Python 3.6.2 pip3.6 -V # 预期输出:pip 9.0.1 from /usr/local/python3.6/lib/python3.6/site-packages (python 3.6)
看到正确的版本号输出,即代表 Python 3.6.2 已成功安装并配置妥当。
版本管理对比
为了更清晰地理解不同安装方式的优劣,下表对几种常见方法进行了对比:
安装方式 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
源码编译 | 版本完全可控,可自定义路径和优化选项,不污染系统环境 | 过程繁琐,编译耗时较长 | 需要特定版本、追求性能、进行深度定制 |
SCL (Software Collections) | 与系统环境隔离,启用方便,易于管理多版本 | 依赖 SCL 仓库,可能没有非常旧的版本 | 需要多个 Python 版本并行开发,希望快速部署 |
EPEL/YUM | 安装快速,简单方便 | 版本通常较旧且固定,可能无法满足特定需求 | 对版本要求不严,快速搭建基础环境 |
相关问答FAQs
答: 这通常是因为系统的 PATH
环境变量没有包含 Python 3.6.2 的可执行文件目录,检查软链接是否创建成功:ls -l /usr/bin/python3.6
,如果存在,再检查 PATH
变量:echo $PATH
。/usr/bin
不在其中,需要将其添加到 ~/.bash_profile
文件中:echo 'export PATH=$PATH:/usr/bin' >> ~/.bash_profile
,然后执行 source ~/.bash_profile
使其生效,最常见的原因是忘记创建软链接或软链接路径错误。
答: 这是为了保护系统的稳定性,CentOS 系统的一些核心管理工具(如 yum
)依赖于系统自带的 Python 版本(可能是 /usr/bin/python
或 /usr/bin/python3
),如果使用 make install
,它会创建一个名为 python3
的通用链接,覆盖掉系统原有的 python3
命令,这会导致 yum
等工具因 Python 版本不兼容而崩溃,而 make altinstall
只会创建 python3.6
、pip3.6
这样带有具体版本号的命令,完全不会干扰系统原有的 Python 环境,是一种更安全、更推荐的做法。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复