CentOS7.9 源码编译安装 Python3.11.9 完整文档
背景说明
CentOS 7.9 系统自带 Python3 版本为 3.6.x,很多新项目不再兼容 Python3.6,需要手动编译安装 Python 3.11.9。
方案选型:源码编译安装,优点:版本可控、和开发环境保持一致;使用
make altinstall,不会覆盖系统自带的 python(系统 yum 依赖旧 python,不能直接替换)。
前置依赖说明
CentOS7 默认 openssl 版本过低,Python3.11 编译时 ssl 模块会编译失败,所以需要单独安装 openssl11 和开发库。
前提:前面已经修复 yum 源(阿里云 vault centos7 源 + epel 源),yum 可以正常安装软件包。
完整操作步骤(root 执行)
1. 安装编译依赖与 openssl11
yum install -y openssl11 openssl11-devel

openssl11 来自 epel 源,epel 源要提前配置好,否则找不到包。
2. 下载 Python3.11.9 源码包
cd /opt wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tar.xz tar -xf Python-3.11.9.tar.xz cd Python-3.11.9


3. 设置 openssl11 头文件、库文件环境变量
告诉编译器使用新版 openssl11,避免编译后 ssl 模块缺失:
export CFLAGS="-I/usr/include/openssl11" export LDFLAGS="-L/usr/lib64/openssl11"

4. configure 编译配置
./configure --prefix=/usr/local/python3.11 \ --enable-optimizations \ --with-ensurepip=install

参数解释:
--prefix=/usr/local/python3.11:指定安装目录,隔离系统 python--enable-optimizations:开启性能优化--with-ensurepip=install:编译完成自带 pip
5. 编译 & 安装
make -j$(nproc) make altinstall
⚠️ 重点:必须用 altinstall,不要 make install make install 会覆盖系统
python3软链接,破坏 yum 工具!altinstall 只会生成python3.11,不会覆盖系统自带的 python3。
6. 创建全局软链接
ln -sf /usr/local/python3.11/bin/python3.11 /usr/local/bin/python3.11 ln -sf /usr/local/python3.11/bin/pip3.11 /usr/local/bin/pip3.11
7. 配置全局环境变量(永久生效)
cat > /etc/profile.d/python311.sh <<'EOF' export PATH=/usr/local/python3.11/bin:$PATH export PYTHONDONTWRITEBYTECODE=1 export PIP_DISABLE_PIP_VERSION_CHECK=1 EOF source /etc/profile.d/python311.sh
变量说明:
PATH:优先使用新 python3.11 的 bin 目录PYTHONDONTWRITEBYTECODE=1:不生成 pyc 字节码文件PIP_DISABLE_PIP_VERSION_CHECK=1:关闭 pip 版本检查,减少输出
8. 验证安装结果
python3.11 --version pip3.11 --version
成功输出:
Python 3.11.9 pip 24.0 from /usr/local/python3.11/lib/python3.11/site-packages/pip (python 3.11)
测试 ssl 模块是否正常(非常关键)
很多人编译完 python,但是 ssl 模块缺失,pip 无法访问 https 源,一定要验证:
python3.11 -c "import ssl; print(ssl.OPENSSL_VERSION)"
正常会打印 openssl 版本号;如果报 ModuleNotFoundError: No module named 'ssl',说明 openssl 编译参数没生效,需要重新 configure 编译。
使用说明
- 系统自带旧版本:
python3(3.6),不要改动,yum 依赖它 - 新项目使用:
python3.11/pip3.11 - 虚拟环境创建示例:
python3.11 -m venv /opt/myenv
常见坑点
- epel 源没装好 →
yum install openssl11找不到包(需要前面的 yum 源修复文档) - 忘记设置 CFLAGS / LDFLAGS → ssl 模块编译失败,pip 无法拉取包
- 使用 make install → 系统 python 被覆盖,yum 直接报错无法使用
- 编译内存不足:
make -j$(nproc)多核编译,小内存机器(1G)建议改为make单线程编译

浙公网安备 33010602011771号