Ubuntu 20.04 中的 python-is-python3 包——它是什么,它实际上做什么?

Ubuntu 20.04 中的 python-is-python3 包——它是什么,它实际上做什么?

我已经使用 Ubuntu 18.04 几年了,并且了解到 Python 2 已从 Ubuntu 20.04 中删除,所以我很期待使用命令pythonpip而不是python3pip3。所以今天我第一次尝试了 Ubuntu 20.04,发现:

$ python --version

Command 'python' not found

$ python3 --version
Python 3.8.5

我感到很惊讶,经过进一步调查,我发现了有关该包裹的以下信息python-is-python3

https://packages.ubuntu.com/focal/python-is-python3

https://launchpad.net/ubuntu/focal/+package/python-is-python3

如何让‘python’程序命令执行Python 3?

这 3 个链接中间的链接描述性最强,但没有一个特别清楚说明它是什么/做什么,以及如果在 Ubuntu 20.04 安装上运行会产生怎样python-is-python3的全部影响。sudo apt-get install python-is-python3

以下是我的一些疑问python-is-python3

  1. python-is-python3Ubuntu/Canonical 专有的吗?如果是,其他 Linux 发行版是否python-is-python3也使用,或者其他发行版是否有类似的等效产品?

  2. 我推测如果我要从命令提示符运行,python-is-python3那么我可以使用命令python而不是。首先,有人可以确认这一点吗?其次,对于 ,即而不是python3,是否也同样适用?pippippip3

  3. 上面的 launchpad.net 链接提到了符号链接的创建。python-is-python3真的只创建一个符号链接吗?为如此简单的目的引入一个包似乎很奇怪。此外,如果随后卸载此包(i.e. sudo apt --purge remove python-is-python3),这会删​​除符号链接吗?

  4. 还有常用的 Python 2 软件包吗?我一下子想不起来了。

  5. 是否有人跑步python-is-python3后由于事先没有意识到的原因而后悔了?

  6. 运行的好处似乎python-is-python3是不必在 Python 命令末尾添加 3,但缺点是您将拥有一个非标准的 Ubuntu 设置,这是对优点python-is-python3/缺点的公平总结吗?

答案1

作为您链接到的软件包描述说

在 Ubuntu 中,所有 python 包都使用显式的 python3 或 python2 解释器,并且根本不使用未版本化的 /usr/bin/python ... 没有包可以声明对此包的依赖关系。

因此,所有官方 Ubuntu 软件包都将明确依赖于“python2”或“python3”,并调用相应的命令。默认的“python”命令故意未定义,因此引用它的任何脚本都必须更新为明确依赖于一个版本或另一个版本。

然而,用户可能有依赖于“python”命令的代码,并且知道他们可以安全地指向它在整个系统中一个版本或另一个版本。软件包python-is-python3(和它的对应物,python-is-python2) 是为此目的设置符号链接的便捷方法。

python-is-python3 真的只创建一个符号链接吗?为了如此简单的目的而引入一个包似乎很奇怪。

Linux 发行版是由大量简单组件组成的极其复杂的系统。软件包管理器的强大之处在于它们能够以统一的方式灵活地执行此类简单操作。例如,服务器设置脚本可能有一个很长的apt软件包列表,应用程序需要安装这些软件包,并且可以简单地将其包含python-is-python3在该列表中。为此目的运送软件包是相当简单而不是有一个用户指南来解释如何手动管理符号链接。

对于 也同样适用pip,即pip而不是 吗pip3

显然不是——根据这个 LaunchPad 错误,无论如何,python3包裹都会自动指向。pippip3

如果你打开.deb该包的文件(我使用了 7-Zip),你会看到,除了一些文档之外,它实际上只包含一个符号链接,安装在/usr/bin/python,指向/usr/bin/python3

答案2

在 Ubuntu 中,所有 Python 软件包都使用显式 Python3 或 Python2 解释器,/usr/bin/python根本不使用未版本化的解释器。一些第三方代码现在主要基于 Python3,但可能会使用/usr/bin/python

python-is-python3 是一个便利包,它提供了一个符号链接,将/usr/bin/python解释器指向当前默认的 python3。它可能会提高与其他现代系统的兼容性,同时破坏一些过时或第三方软件。

python-is-python3 替换:python、python-is-python2。

我在 Ubuntu 20.04 中安装了 python-is-python3 作为便利包,但是后来 python2.7 作为另一个包的依赖项自动安装后,我卸载了它。

相关内容