
在 CentOS 上跑 Python,很多老手都踩过坑。系统自带的 Python 版本往往太旧,甚至还是 Python 2.7,而现代开发离不开 Python 3。直接删了系统 Python?千万别,yum 等工具可能直接罢工。咱们得学会共存,把新环境安顿好。
1. Python 环境安装与配置
1.1 别动系统自带 Python
CentOS 默认带的 Python 2.7 虽然老了,但它是系统工具的基石。强行卸载会导致 yum 失效,甚至需要重装系统。正确的姿势是保留它,另起炉灶装 Python 3。
1.2 源码编译安装 Python 3
依赖包缺了容易报错,比如缺 openssl-devel 就搞不定 SSL 模块。先备好这些家伙:
sudo yum groupinstall "Development Tools" -y
sudo yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel sqlite-devel readline-devel tk-devel -y
下载源码后,用 altinstall 而不是 install,这是为了防止覆盖系统默认的 python 命令:
wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tgz
tar -xf Python-3.12.2.tgz
cd Python-3.12.2
./configure --enable-optimizations --with-openssl=$(which openssl)
make -j $(nproc)
sudo make altinstall
装完记得用 python3.12 调用新版本。如果遇到 _ssl 模块找不到,多半是 OpenSSL 没配好,重新编译时指定一下路径就行。
1.3 环境变量管理
新装的 Python 不在 PATH 里怎么办?加到 ~/.bashrc 里:
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
echo 'export PYTHON_HOME=/usr/local/bin/python3.12' >> ~/.bashrc
source ~/.bashrc
验证一下版本和 pip 是否正常,顺便看看 SSL 库版本对不对:
python3.12 --version
pip3.12 --version
python3.12 -c "import ssl; print(ssl.OPENSSL_VERSION)"
要是想切换默认版本,可以用 alternatives 工具,不过建议直接用具体版本号更稳妥。
1.4 SCL 替代方案
CentOS 7 用户有个神器叫 Software Collections (SCL),不用编译也能装多版本 Python,适合不想折腾源码的人:




