1. 检查现有Python版本
在安装前,先确认系统是否自带Python及版本(CentOS 7默认Python 2.7,CentOS 8+默认Python 3.6+):
python --version # 查看Python 2版本(如有)
python3 --version # 查看Python 3版本
避免覆盖系统默认Python,防止影响系统工具(如yum)的正常运行。
2. 推荐安装方式:优先使用YUM包管理器
YUM是CentOS官方包管理工具,安装的Python版本经过适配,稳定性高,且自动解决依赖问题:
sudo yum update -y
sudo yum install epel-release -y
sudo yum install python38 python38-pip -y
yum)sudo dnf install python3 -y
python3 --version # 输出类似Python 3.8.12
pip3 --version # 确认pip可用
此方式适合大多数用户,无需手动编译,节省时间。
3. 备选方案:从源码编译安装(需特定版本时)
若需要最新Python版本(如3.11+)或自定义编译选项(如PGO优化),可选择源码编译:
sudo yum groupinstall "Development Tools" -y # 安装gcc、make等工具
sudo yum install openssl-devel bzip2-devel libffi-devel zlib-devel -y # Python编译依赖
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz
sudo tar xzf Python-3.9.9.tgz
cd Python-3.9.9
sudo ./configure --enable-optimizations # 启用PGO优化(提升运行性能)
sudo make -j $(nproc) # 多线程编译(加快进度)
sudo make altinstall # 避免覆盖系统Python
python3.9 --version # 输出Python 3.9.9
注意:编译过程耗时较长,需根据CPU核心数调整-j参数(如-j 4表示4线程)。
4. 灵活管理多版本:使用pyenv工具
若需在同一系统运行多个Python版本(如项目A用3.8,项目B用3.9),推荐使用pyenv:
sudo yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel tk-devel libffi-devel xz-devel -y
curl https://pyenv.run | bash
~/.bashrc):echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv install 3.9.9
pyenv global 3.9.9
pyenv local 3.8.12
python --version # 输出当前pyenv管理的版本
pyenv的优势是能无缝切换版本,且支持版本回滚,适合开发环境。
5. 必须使用虚拟环境隔离项目依赖
避免不同项目间的Python包冲突(如项目A用Django 3.x,项目B用Django 4.x),推荐使用venv(Python 3内置)或pipenv(更高级的依赖管理):
python3 -m venv myenv # 创建名为myenv的虚拟环境
source myenv/bin/activate # 激活环境(CentOS 7需用`source`)
激活后,终端提示符会显示(myenv),表示已进入虚拟环境。pip install -r requirements.txt # 安装项目依赖文件中的包
deactivate
pip install pipenv # 安装pipenv
pipenv install django==3.2.16 # 安装指定版本包并创建虚拟环境
pipenv shell # 激活虚拟环境
虚拟环境是Python开发的最佳实践,能有效解决“依赖地狱”问题。
6. 优化与安全注意事项
make altinstall而非make install(源码编译时),或通过YUM/pyenv安装,防止破坏系统工具(如yum依赖Python 2)。sudo yum update python3 -ypip list --outdated | awk '{print $1}' | xargs -n1 pip install -Udevtoolset:sudo yum install centos-release-scl -y
sudo yum install devtoolset-11 -y # 安装GCC 11
scl enable devtoolset-11 bash # 临时启用GCC 11
编译完成后,可退出scl环境(exit)。