centos 7 安装 python3 必须手动编译,不可覆盖系统默认 python(防 yum 瘫痪);推荐使用 --prefix 指定独立安装路径、--with-openssl 指向新版 openssl、--enable-optimizations 启用优化,并安装 libffi-devel 等关键依赖,再配置软链接与 path。

python3 不是系统默认命令,直接运行会报 command not found —— 这不是因为你没装,而是因为没配环境变量、没建软链接、或根本没装成功。Linux 发行版(尤其是 CentOS/RHEL 7)预装的是 python2.7,python3 必须手动安装,且**绝不能覆盖 /usr/bin/python**,否则 yum 等系统工具会直接瘫痪。
为什么不能用 yum install python3 直接装?
CentOS 7 默认仓库里的 python3 版本是 3.6.8,但很多项目依赖 3.8+ 或需要特定补丁(如 SSL 支持)。更关键的是:yum install python3 安装的二进制在 /usr/bin/python3,但它的 pip3 可能不带 setuptools,且无法指定编译选项(比如 --enable-optimizations 或自定义 OpenSSL 路径)。一旦后续要升级或打补丁,只能重装,没有源码控制权。
configure 时必须加 --prefix 和 --with-ssl
不指定 --prefix 就会默认装到 /usr/local,但那里权限混乱,且和系统包管理冲突。必须显式指定独立路径,比如 /opt/python3.9 或 /home/username/local/python3.9。同时,CentOS 7 自带的 OpenSSL 版本太旧(1.0.2k),会导致 pip 安装包时 SSL 验证失败,所以 --with-ssl 是基础,但还不够——你还得确保 ./configure 能找到新版 OpenSSL:
- 先用 root 编译安装 OpenSSL 到
/usr/local/openssl - 再运行
./configure --prefix=/opt/python3.9 --with-openssl=/usr/local/openssl - 否则即使加了
--with-ssl,configure 也可能 fallback 到系统旧库,导致后续pip install requests报Certificate verify failed
make install 后必须手动处理软链接和 PATH
make install 只会把二进制放到 /opt/python3.9/bin/python3,不会自动创建 python3 命令,也不会让 pip3 可用。你得自己操作:
- 建软链接:
sudo ln -sf /opt/python3.9/bin/python3 /usr/local/bin/python3 -
pip3如果提示command not found,不是没装,而是pip没随 Python 一起初始化成功;此时进/opt/python3.9/bin手动运行./pip3 --version,如果报错ModuleNotFoundError: No module named 'ensurepip',说明 configure 时漏了--enable-optimizations或没装zlib-devel - 把
/opt/python3.9/bin加进用户 PATH:编辑~/.bashrc,加一行export PATH="/opt/python3.9/bin:$PATH",然后source ~/.bashrc
最容易被忽略的三个点
第一,libffi-devel 在 Python 3.7+ 是硬依赖,CentOS 7 默认不装,不装会导致 import _ctypes 失败,所有调用 C 扩展的库(包括 pip 自身)都起不来;第二,sqlite-devel 缺失会让 sqlite3 模块编译失败,进而导致 Django、Flask 等框架启动报错;第三,make install 成功后别急着删源码目录——里面还藏着 Modules/Setup 文件,以后要加模块就得靠它。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











