![如何在 RHEL 7 上将 python 默认版本从 2.7 更改为 3.7](https://linux22.com/image/140034/%E5%A6%82%E4%BD%95%E5%9C%A8%20RHEL%207%20%E4%B8%8A%E5%B0%86%20python%20%E9%BB%98%E8%AE%A4%E7%89%88%E6%9C%AC%E4%BB%8E%202.7%20%E6%9B%B4%E6%94%B9%E4%B8%BA%203.7.png)
如何在 RHEL 7 上将 python 默认版本从 2.7 更改为 3.7。
按照以下步骤在 RHEL7 虚拟机上安装 pythonhttps://tecadmin.net/install-python-3-7-on-centos/
当我检查 python 版本时,它仍然打印旧版本。
答案1
RHEL 7 及其衍生产品在很大程度上依赖于 Python 2。如果你用 Python 3 彻底替换 Python 2,你将破坏操作系统的几个核心工具。
即使情况并非如此,您的问题也是基于一个错误的前提,即用 Python 3 完全替换 Python 2 首先是一个好主意。相反,并排安装两者。
如何?首先,人们应该始终将 Python 3 称为python3
,因为这样可以使您免受主要版本兼容性问题的影响。假设 Python 2 的脚本将按如下python
所示调用它舍邦线python3
因此,只要正确构建了二进制 Python 包,旧版本和新版本的二进制文件以及依赖于它的所有内容之间实际上并不存在冲突。
这个“如果”可能会咬你:一些打包者创建了带有 a/usr/bin/python
或类似的 Python 3 包,这会产生冲突。这些软件包忽略了标准建议,这允许两者并行安装。
至于得到一个不冲突的RHEL 7 的 Python 3 包,那就是Stack Overflow 上的另一个答案很好地涵盖了。
答案2
我会推荐alternatives
解决方案
我的命令是。
#!/bin/bash
alternatives --list | grep -i python
alternatives --install /usr/bin/python python /usr/bin/python2.7 1
alternatives --install /usr/bin/python python /usr/bin/python3.6 2
alternatives --install /usr/bin/python python /usr/local/bin/python3.7 3
alternatives --config python
答案3
在采用标准官方安装(使用 SCL 存储库)的 RHEL7 上,通过“scl enable”命令切换到当前 shell 的 python3 环境(注意:在我的情况下,我有 python 3.6):
scl enable rh-python36 "/bin/bash"
我发现,如果你想设置某个用户为其环境硬配置Python3,只需这样做(注意:用该用户的用户名替换“[some_user]”):
user=[some_user]; userhome=$(eval echo ~$user); echo ". /opt/rh/rh-python36/enable" >> ${userhome}/.bashrc
.bashrc 会为登录和非登录 shell 加载,因此这应该适用于从命令行运行的脚本以及由某些 cron 作业运行的脚本等。它所做的只是设置所需的环境变量以指向 Python3 而不是系统默认作为主要位置,就这么简单。
有关 SCL 的更多信息,您可以在这里找到 - 强烈建议阅读以理解这个概念:https://developers.redhat.com/products/softwarecollections/overview