当前位置: 首页>>技术问答>>正文


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

,

问题描述

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

最佳解决方案

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

  • for the time being, all distributions should ensure that python refers to the same target as python2.

type pythonfile /usr/bin/python将证实这一点。

除了约定之外,这种安排的原因是源包python-defaults in Xenial is the version 2.7.11,所以python符号链接指向这个版本。

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

plans to migrate everything to 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应该可用作python。这个假设是错误的。

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

为Python 3编写的代码应始终寻找名为python3的解释器。为Python 2编写的代码将历史上寻找python

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

“Current old”系统不了解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都会让人感到困惑。)

第四种方案

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

下图可以帮到你。

python3,ubuntu

第五种方案

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2031.html,未经允许,请勿转载。