如何在CentOS 7中不通过源码(tar.gz/tgz)系统级安装Python 3.9?
当然可以!在CentOS 7上不用源码编译,直接系统级安装Python 3.9的方案有好几种,最常用的是借助第三方软件仓库——IUS或者SCL,这俩都不会替换系统默认的Python 2.7(毕竟CentOS 7的很多核心工具还依赖它),完全安全。下面给你分步说明:
IUS(Inline with Upstream Stable)是专门为RHEL/CentOS系列提供上游稳定版软件包的仓库,兼容性拉满,不会和系统自带包冲突。
先安装依赖和IUS仓库
先把系统包更到最新,再装上IUS和它依赖的EPEL仓库:sudo yum update -y sudo yum install -y https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm安装Python 3.9
IUS里的Python 3.9包名叫python39,直接装就行:sudo yum install -y python39装完之后,你可以用
python3.9命令调用它,系统默认的python还是指向2.7,完全不影响原有系统工具。可选:把Python 3.9设为默认
python3
如果你希望输入python3就用3.9版本,用alternatives工具配置:sudo alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1之后要是想切换版本,执行
alternatives --config python3选对应的序号就行。
SCL是Red Hat官方支持的仓库,专门用来提供比系统默认更新的软件包,同样不会覆盖默认版本。
安装SCL仓库
sudo yum install -y centos-release-scl安装Python 3.9
SCL里的Python 3.9包是rh-python39:sudo yum install -y rh-python39全局启用Python 3.9(默认SCL包只在当前会话生效)
要是想让所有用户登录后都能用,把启用命令加到系统全局配置里:echo "source /opt/rh/rh-python39/enable" | sudo tee /etc/profile.d/rh-python39.sh执行
source /etc/profile.d/rh-python39.sh立刻生效,或者重新登录系统,之后python3就指向3.9了。
- 绝对不要修改系统默认的
python命令指向Python3!CentOS 7的yum、systemd等核心工具都依赖Python 2.7,改了会直接导致系统出问题。 - 验证安装成功:执行
python3.9 --version或者python3 --version(如果配置了默认),能看到3.9.x的版本号就没问题。 - 装Python包用
pip3.9 install <包名>,避免和系统自带的pip搞混。
内容的提问来源于stack exchange,提问作者Sowjanya Medapati

