Ubuntu 20.04 中的 python-is-python3 包 - 它是什么,它实际上有什么作用?

cda*_*hms 25 python python3 20.04

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

$ python --version

Command 'python' not found

$ python3 --version
Python 3.8.5
Run Code Online (Sandbox Code Playgroud)

我很惊讶,并在进一步调查后发现了有关包裹的以下信息python-is-python3

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

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

如何让“python”程序命令执行 Python 3?

这 3 个链接的中间是最具描述性的,但没有一个特别清楚python-is-python3是/做什么以及如果sudo apt-get install python-is-python3要在 Ubuntu 20.04 安装上运行的全部后果。

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

  1. python-is-python3Ubuntu/Canonical 专有的吗?如果是这样,其他 Linux 发行版是否python-is-python3也使用或其他一些发行版有类似的等价物?

  2. 我收集是否python-is-python3要从命令提示符运行,然后我可以使用该命令python而不是python3. 首先有人可以确认这一点,其次,同样适用于pip,即pip而不是pip3

  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好处/缺点的公平总结吗?

IMS*_*SoP 20

正如您链接到的包描述所说

在 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.

  • 至于 `pip` - 为了避免意外(想想:系统中的许多 Python 版本,加上 conda envs,加上 virtualenvs...),通常最好将其运行为 `[/path/to/]python -米点...` (8认同)

kar*_*rel 12

在 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 作为另一个包的依赖项自动安装后我卸载了它。