问题描述
我在终端窗口中键入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 aspython2
.
type python
和file /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
之后消失了,那可能会成真。 – 因为让它指向python3
或python4
都会让人感到困惑。)
第四种方案
Python都提供2.x,3.x版本。如果你调用python,因为它指向python 2.x它将加载python 2.x.
下图可以帮到你。
第五种方案
Python 3.x应该与16.04一起使用 – 实际上,它肯定会起作用。我有Ubuntu 14.04,我有Python 3.4.3 – 你需要做的就是测试它是python3
中的类型,它应该告诉你你正在运行什么版本。