CentOS怎么安装Python 3.9

酷伟君_3273

酷伟君_3273

2026-09-05

196人浏览

原创

结论:centos 7/8 安装 python 3.9 必须源码编译并执行 make altinstall,禁用 make install 和 yum install python3.9(官方仓库无此包);关键参数为 --enable-shared --with-ensurepip=install --prefix=/usr/local,安装后需配置 /etc/ld.so.conf.d/python3.9.conf 并运行 ldconfig 解决共享库加载问题。

centos怎么安装python 3.9

直接说结论:CentOS 7/8 上装 Python 3.9,优先用源码编译 + make altinstall,别碰 yum install python3.9(EPEL 里压根没这个包)。系统自带的 python3 最高只到 3.6(CentOS 7)或 3.8(CentOS 8),想用 3.9 必须自己编译。


为什么 yum install python3.9 会失败

CentOS 官方仓库和 EPEL 都不提供 python3.9 包:yum install python3.9 会报错 No package python3.9 available。网上有些教程说“启用 SCL”就能装,但 CentOS 8 已废弃 SCL,CentOS 7 的 python39 SCL 包实际是 3.9.13+,且需手动启用、环境隔离复杂,不适合通用开发场景。

  • yum install python3 装的是系统默认版本(CentOS 7 是 3.6.8,CentOS 8 是 3.8.8),不是 3.9
  • 所谓 “centos-release-scl + python39” 方案,安装后命令是 python3.9,但所有依赖(如 pip3.9venv)都得在 scl enable python39 bash 下才能用,一退出就失效
  • 生产环境不推荐 SCL,因为路径、环境变量、systemd 服务调用都容易出错

configure 必加的三个参数

解压源码后执行 ./configure,漏掉任意一个,后续大概率 pip 报错、SSL 失效、C 扩展编译失败。

  • --enable-shared:生成 libpython3.9.so,否则 numpycryptography 等扩展 import 时会报 undefined symbol: Py_Initialize
  • --with-ensurepip=install:强制安装 pip3.9。不加的话,python3.9 -m ensurepip 往往因缺 SSL 模块而失败
  • --prefix=/usr/local:统一安装到标准位置。别用 --prefix=/opt/python39 这类自定义路径,否则要反复折腾 LD_LIBRARY_PATHPATH

完整命令示例:
./configure --enable-optimizations --enable-shared --with-ensurepip=install --prefix=/usr/local

Shadows Python Sensei
Shadows Python Sensei

Python 最佳实践助手——代码规范、设计模式、性能优化、测试与类型注解。适用于编写或审查 Python 代码。

下载

make altinstall 是硬性要求,不是可选项

make install 会往 /usr/bin/pythonpip 两个无版本号的命令,直接覆盖系统原有链接 —— CentOS 7/8 的 yum 脚本第一行是 #!/usr/bin/python,指向 Python 2.7,一旦被改成 3.9 就立即报错:ImportError: No module named site 或直接语法错误,yum 彻底瘫痪。

  • 必须用 sudo make altinstall,它只生成 python3.9pip3.9,不碰 python/pip
  • 验证是否安全:ls /usr/bin/python* 输出里不应出现 python -> python3.9pip -> pip3.9
  • 如果已误执行 make install,立刻用 rpm -qf /usr/bin/python 查归属包,再 sudo yum reinstall python 恢复

装完跑不起来?八成是共享库没加载

执行 python3.9 --version 报错:error while loading shared libraries: libpython3.9.so.1.0: cannot open shared object file —— 这说明动态链接器找不到 .so 文件。

  • Python 默认把 .so 装到 /usr/local/lib,但系统不会自动扫描这个路径
  • 解决方法不是临时加 LD_LIBRARY_PATH(不安全、不持久),而是让系统级链接器识别:
    echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/python3.9.conf
    sudo ldconfig
  • 验证:ldconfig -p | grep python3.9 应能看到 libpython3.9.so.1.0

最后提醒一句:CentOS 7/8 已停止维护(EOL),但如果你还在用,务必保留系统自带的 Python 2.7 和 Python 3.6/3.8 不动,所有新项目明确用 python3.9 命令启动,虚拟环境也用 python3.9 -m venv myenv 创建 —— 版本混用本身不危险,危险的是动了 /usr/bin/python 这个 symlink。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1551

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

3664

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1569

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

20877

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2587

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2647

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1063

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

576

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2043

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程