为什么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 python
和file /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
之后消失了,那可能会成真。 – 因为让它指向python3
或python4
都会python4
感到困惑。)
Python 3.x应该与16.04一起使用 – 实际上,它肯定会起作用。 我有Ubuntu 14.04,我有Python 3.4.3 – 你需要做的就是测试它是python3
类型,它应该告诉你你正在运行什么版本。