为什么 python 3 不是默认的 python 二进制文件?

giv*_*onz 43 python3

python在终端窗口中输入。我得到的是 Python 2.7 而不是 Python 3.5。根据文档,Python 3.5 应该是预加载的。

Bra*_*iam 57

我不知道你在读什么“文档”,也不知道他们说了什么,但这/usr/bin/python只是一个指向 python 默认版本的符号链接,在这种情况下是 2.7,这是python在终端上输入的结果。这是PEP 394的结果,它定义了

  • 目前,所有发行版都应确保python引用与 相同的目标python2

type python并且file /usr/bin/python将确认这一走势。

这种安排的原因不同于约定,是Xenial中的源包python-defaults是版本 2.7.11,所以python符号链接指向这个版本。

要使用 python 3,您必须明确并python3在命令行中输入,如果您需要特定版本,建议您这样做,这也可以使用 python 2 完成,输入python2. 默认情况下,Ubuntu 在所有当前版本上都包含 python 2 和 3 版本。

计划将所有内容迁移到 python 3并将其标记为默认值。

  • [**这是文档**](https://wiki.ubuntu.com/XenialXerus/ReleaseNotes#Python_3) OP 的意思。 (2认同)

小智 10

要获取 Python 3.5 REPL 或运行兼容的脚本,请键入python3. 这是为了保持与所有旧版 python 2.x 的兼容性(一直并将保持链接到python)。

破折号可以找到python您是否.desktop为它设置了一个文件(在 中~/.local/share/applications/),例如打开终端并启动 REPL。python没有默认的GUI REPL环境,正常的界面期望是用户会去终端。

python 3.5 是默认的说法是维护者将所有系统脚本从 python 2.x 移植到 python 3.x,而不是 python 3 将在所有情况下替换 python 2。

  • AIUI 从长远来看如何处理 /usr/bin/python 仍然是一个悬而未决的问题。python2 脚本的最佳实践是显式使用 python2。 (2认同)

Rob*_*mer 5

您假设默认 Python 应该以python. 这种假设是错误的。

不幸的是,python在 shellTab扩展期间,过时的 Python 2 ( ) 首先出现,然后是当前和默认 Python 3 ( python3) 在具有两者的系统上。命名本身当然也无助于找到默认值,但这背后是有原因的。

在附带的Python 3的系统“预装”没有的Python 2可言,只会有python3与无python

为 Python 3 编写的代码应始终寻找名为python3. 为 Python 2 编写的代码历来会寻找python.

这样,无论新旧脚本都不会因为python可能指向的内容(它指向 Python 2)而产生任何不确定性,因此不会有额外和不必要的损坏。

可能会有一个时间点,可能是几十年后,几乎没有人记得 Python 2,什么时候python可能会开始提到python3. 这纯粹是为了方便,可以也不应该过早完成,如果有的话!不着急,因为以下影响:

“当前老”系统不会有任何的知识python2,只是python,所以它非常有意义保持的Python 2代码寻找python。这就是为什么python应该将 Python 2 称为“只要 Python 2 代码存在”的原因。

为 Python 2 编写的新代码,如果有意义的话,可以完美地查找python. python2如果打算仅在 Python 3 感知和精心修饰的系统上运行(应该提供此类链接),它也可能会寻找。

使用 Python 2 代码的好处python2是,一旦python开始引用,它就不需要额外的接触python3,这可能永远不会发生,或者一旦python消失,可能会也可能不会发生。(这可能会成真,如果 Python 2 代码在假设的 Python 4 因其解释器而流行之后就消失了python4。 - 因为让它指向其中一个python3python4两者都会令人困惑。)

注意:Arch Linux 发行版没有遵循建议,让我们python指向 Python 3。