我使用 Arch,所以在服务器中使用时这是一个痛点(显然,没什么大不了的,只是我必须记住的事情),现在 Python2 不再维护,我一直在做一些研究关于是否有任何广泛的运动来反对使用/bin/python
to point to /bin/python2
。
我发现这askubuntu.com 上的答案不错,但它已经过时了,链接也是如此。
Ubuntu Python 页面没有提及此重新别名。
注意:由于 Python 2 的弃用,Debian 测试 (bullseye) 已删除“python”包和“/usr/bin/python”符号链接。任何打包脚本都不应依赖于“/usr/bin/python”的存在:如果这样做,那就是一个错误,应该向 Debian 报告。您可以使用“python-is-python3”或“python-is-python2”软件包为第三方或旧脚本恢复适当的“/usr/bin/python”符号链接。
我目前没有运行 Debian,所以我无法检查 Debian 是否已经转换而 Ubuntu 还没有? (截至 20.04python -V
仍为 2.7)。我承认我对/usr/bin
和之间的区别有点模糊,/bin
并且已经发现这个体面的解释我很快就会读到。
(相当过时)Ubuntu Python/3 页面说有一个正在进行的项目使 python3 成为默认值,但在有更新的 PEP 之前/bin/python
不会改变/bin/python3
公众号 394。 (我相信这可以回答我关于 Debian 的问题。)
我能找到的关于该主题的最新更新来自 2/2019 的一篇 LWN 文章,标题为重温 PEP 394
至少根据 Guido van Rossum 在早期 PR 中的评论,最终的意图是 python 实际上不会指向任何地方,因为它不存在;用户需要明确选择 python2 或 python3。这也是 Viktorin 公关目标的一部分。他希望对 PEP 进行两项更改:允许安装“python”(或者他所说的“无版本化的 Python”)对于发行版来说是可选的,并建议支持 Python 2 和 Python 3 的脚本使用 python3在他们的shebang台词中。最后一点有点违反直觉,因为这意味着这些脚本实际上只能在 Python 3 下运行,无论它们是否能够在任一版本下运行。维克托林说,这是“最不坏的选择”。
...
正如他在语言峰会上所做的那样,Matthias Klose 在线程中代表了 Debian 和 Ubuntu Python 打包者。他描述了无版本 Python 的计划;对于 Debian 来说,Python 从来没有计划指向 Python 3,而 Ubuntu 也没有做出最终决定,但它目前并没有安装未版本化的 Python。 Debian 将继续让 python 指向 Python 2,直到它不再提供 Python 2,然后将其完全删除。 Klose 试图确保,对于 2020 年或 2021 年开始的即将发布的发行版,Debian 和 Ubuntu 软件包中的 Python 脚本都使用显式的 shebang 行。
这表明 Rossum 的目标是建议/bin/python
完全弃用,而 Debian 的计划是等到 Debian 完全放弃 Python2(那方面的状态如何?),然后就弃用/bin/python
(或者我误解了,因为它还说 Debian 从未计划将 python 指向 python3)。 Ubuntu 不提供未版本控制的 Python 的建议对我来说没有意义(我绝对可以输入python -V
并让它打印 2.7,而不需要做任何特殊的事情。
我希望有一些社区成员比这篇 2 年多前的文章有更多的见解,尽管我承认这似乎是一个进展非常缓慢的问题。在我看来,Python2 已经停产一年多了,到了 2021 年,我们仍然将其视为大多数系统的默认设置,这似乎很疯狂。大多数新用户可能会感到惊讶,因为python
在大多数系统上打字意味着他们使用的是已弃用的软件。
我确实知道这是一个非常困难的改变,考虑到必须在不运行 Arch Linux 的服务器上运行的遗留脚本数量惊人。这是一个简单的修复方法#!/bin/python
,#!/bin/python2
但从大多数公司对待遗留软件的方式来看,我认为这比在编辑器中打开脚本并添加 3 更麻烦一些。
答案1
Fedora >=33 已经做到了这一点,至于其他 - 不知道。 Python 2 是反正死了这种转变迟早会发生。
$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: Fedora
Description: Fedora release 33 (Thirty Three)
Release: 33
Codename: ThirtyThree
$ python -V
Python 3.9.2
大多数新用户可能会感到惊讶,因为在大多数系统上输入 python 就意味着他们使用的是已弃用的软件。
大多数新用户从一开始就从未使用过 Python,程序员肯定会找到解决它的方法(以/usr/bin/python3
)。
我不确定你真正关心的是什么。