CentOS升级Python的常用方法
在CentOS系统中升级Python需谨慎操作,因系统工具(如yum
)可能依赖默认Python版本(通常为2.7或3.6)。以下是四种主流方法,覆盖不同需求场景:
SCL允许在保留系统默认Python的同时,安装并切换至新版本,适合需要兼顾系统稳定性的场景。
sudo yum update -y sudo yum install centos-release-scl -y
sudo yum install rh-python39 -y
scl enable rh-python39 bash
永久启用(添加到~/.bashrc
):echo "source /opt/rh/rh-python39/enable" >> ~/.bashrc source ~/.bashrc
python --version # 输出应为Python 3.9.x
优点:不影响系统默认Python,适合生产环境。
缺点:需通过scl
命令切换版本,灵活性一般。
适合需要特定Python版本(如3.11+)或自定义编译选项的场景。
sudo yum groupinstall "Development Tools" -y sudo yum install openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel wget -y
wget https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tgz tar xzf Python-3.11.6.tgz cd Python-3.11.6
./configure --enable-optimizations # 启用优化 make -j $(nproc) # 多线程编译(加快速度) sudo make altinstall # 使用altinstall避免覆盖系统python命令
python3.11 --version # 输出应为Python 3.11.6
优点:可安装最新版本,完全自定义。
缺点:编译耗时,需手动管理依赖,需避免覆盖系统Python。
适合需要频繁切换多个Python版本(如开发测试不同项目)的场景。
sudo yum install -y git gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils
curl https://pyenv.run | bash
~/.bashrc
(或~/.zshrc
):export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
然后重新加载配置:source ~/.bashrc
pyenv install --list
pyenv install 3.10.12
pyenv global 3.10.12
.python-version
文件):pyenv local 3.10.12
python --version # 输出应为Python 3.10.12
优点:灵活管理多版本,支持per-project版本隔离。
缺点:需维护pyenv环境,学习成本略高。
适合数据科学、机器学习项目,内置conda
包管理工具,简化环境创建与管理。
Miniconda3-latest-Linux-x86_64.sh
),然后执行:bash Miniconda3-latest-Linux-x86_64.sh
按提示完成安装(接受许可协议、选择安装路径)。conda create -n myenv python=3.9 -y # 创建名为myenv的环境,指定Python 3.9
conda activate myenv
python --version # 输出应为Python 3.9.x
优点:一键管理Python与环境,适合数据科学项目。
缺点:占用磁盘空间较大,非数据科学场景可能冗余。
yum
)及依赖库(如numpy
)兼容。altinstall
(源码编译)或工具(如SCL、pyenv)替代install
,防止破坏系统功能。python3.x -m pip install --upgrade pip virtualenv
根据需求选择合适的方法:生产环境推荐SCL或源码编译;开发环境推荐pyenv或多conda;数据科学场景优先Anaconda。