在Twitter上,我说:
今天我被不愉快地提醒了,CentOS 7(仍然)没有提供任何版本的Python 3。你必须添加EPEL仓库以获得Python 3.6。
这是因为两件事情的结合而出现的。第一是我们需要设置CentOS 7来托管一个商业软件,因为CentOS 7是它支持的最新的Linux版本。第二是我们越来越多的本地管理工具现在是Python 3,由于各种原因,这个特定的CentOS 7机器需要运行它们(或者至少想运行),而我们现有的CentOS 7机器还没有。其结果是,当我在新安装的CentOS 7虚拟机上设置我们的标准环境的各个部分时,由于没有/usr/bin/python3 ,它们无法运行。
在某种程度上,这很容易解决。添加EPEL仓库是一个直接的 'yum install epel-release',之后安装 Python 3.6 是 'yum install python36'。你不会得到一个pip3 ,我不知道如何改变它,但对我们来说 pip3 是不必要的;除了特殊情况,我们不会通过 PIP 在全系统安装软件包。
(目前的特殊情况是在我们的GPU计算服务器上安装Tensorflow。这些服务器运行的是Ubuntu 18.04,其中pip3或多或少是标准配置。如果我们有通用的CentOS 7机器,这将是一个问题,因为pip3对于像Python LSP服务器这样的个人安装是必要的)。
即使现在有Python 3.6而不是3.7也不是特别糟糕;我们的Ubuntu 16.04机器有Python 3.5.2,甚至我们的18.04机器只有3.6.8。即使不考虑CentOS 7,我们也要过几年才能安全地将我们的任何代码转移到3.6.8以上,因为我们的一些18.04机器明年不会升级到20.04,可能会一直使用18.04,直到2023年初支持开始耗尽。这与CentOS 7可能在2024年中期结束生命的时间惊人地接近(这比我开始写这篇文章之前想象的要近得多),所以看起来CentOS 7只有Python 3.6并不会对我们的代码造成很大的阻碍,如果有的话。
(希望到2023年,要么EPEL在CentOS 7上有更多最新版本的Python 3,要么这个商业软件最终支持CentOS 8。我不能责怪他们还不支持RHEL 8,因为它推出的时间还比较短)。
PS: 我不知道这样做得到的epel-release仓库和按照EPEL wiki的说明得到的epel-release-latest仓库有什么区别。后者的仓库似乎仍然没有Python 3.7,所以我并不担心;我对得到的Python 3.6的具体版本不是很挑剔,尤其是我们的代码无论如何都要在3.5上运行。