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

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

我不知道你正在读什么“docs”也不知道他们说什么,但是/usr/bin/python只是/usr/bin/python默认版本的符号链接,在本例中是2.7,这只是输入python的结果在终端上。 这是PEP 394定义的结果

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

type pythonfile /usr/bin/python将确认这一点。

除了约定之外,这种安排的原因是Xenial中的源包python-defaults是版本2.7.11 ,因此python符号链接指向此版本。

要使用python 3,你必须是显式的并在命令行中键入python3 ,如果你需要特定版本,建议使用python 2,输入python2 。 默认情况下,Ubuntu在所有当前版本中都包含python 2和3版本。

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

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

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

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

Python都提供2.x,3.x版本。 如果你调用python,因为它指向python 2.x它将加载python 2.x.

下图可以帮到你。

在此处输入图像描述

您假设默认Python应该可用作python 。 这个假设是错误的。

在Python 3“预加载”并且根本没有Python 2的系统上,将只有python3而没有python

为Python 3编写的代码应该总是寻找一个名为python3的解释器。 为Python 2编写的代码将历史上寻找python

可能会出现一个时间点,可能是几十年后,几乎没有人记得Python 2,当python可能开始引用python3 。 这纯粹是为了方便,如果有的话,可以而且不应该过早地完成! 由于以下影响,并不着急:

“当前的旧”系统将不知道python2 ,只有python ,所以保持Python 2代码寻找python 。 这就是为什么python应该引用Python 2“只要Python 2代码存在”。

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

使用python2的Python 2代码的好处是,一旦python开始引用python3 ,它就不需要额外的触摸,这可能永远不会发生,或者一旦python消失,可能会或可能不会发生。 (如果Python 2代码在假设的Python 4变得流行于它的解释器python4之后消失了,那可能会成真。 – 因为让它指向python3python4都会python4感到困惑。)

Python 3.x应该与16.04一起使用 – 实际上,它肯定会起作用。 我有Ubuntu 14.04,我有Python 3.4.3 – 你需要做的就是测试它是python3类型,它应该告诉你你正在运行什么版本。