我在终端窗口中输入python
。我得到的是 Python 2.7,而不是 Python 3.5。根据文档,Python 3.5 应该是预装的。
答案1
我不知道您正在阅读什么“文档”,也不知道它们说了什么,但这只是指向 python 默认版本的符号链接,在本例中为 2.7,这是在终端上/usr/bin/python
输入的结果。这是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并将其标记为默认。
答案2
要获取 Python 3.5 REPL 或运行兼容的脚本,请输入python3
。这是为了保持与所有旧版 Python 2.x 的兼容性(始终与 保持链接,并将继续保持链接python
)。
例如,如果您为其python
设置了一个文件(在 中), dash 可以找到它,以打开终端并启动 REPL。python 没有默认的 GUI REPL 环境,正常的界面预期是用户将转到终端。.desktop
~/.local/share/applications/
关于 python 3.5 成为默认语言的讨论是指维护人员将所有系统脚本从 python 2.x 移植到 python 3.x,而不是 python 3 在所有情况下都会取代 python 2。
答案3
您假设默认 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
可能会开始提到python3
。这纯粹是为了方便,可以也不应该过早地做,如果有的话!不必着急,因为会产生以下影响:
“当前旧”系统不会知道python2
,只会知道python
,因此让 Python 2 代码寻找 是完全合理的python
。这就是为什么python
“只要 Python 2 代码存在”就应该引用 Python 2 的原因。
如果有意义的话,为 Python 2 编写的新代码可以完美地查找。如果它打算仅在支持 Python 3 且经过良好维护的系统上运行(可能会提供此类链接),python
它也可能会查找。python2
使用 Python 2 代码的好处是,一旦开始引用,python2
它就不需要额外的接触,这可能永远不会发生,或者一旦消失,这可能会发生也可能不会发生。(如果 Python 2 代码在假设的 Python 4 及其解释器流行之后消亡,那么这可能会实现。——因为让它指向其中一个或两个都会造成混淆。)python
python3
python
python4
python3
python4
注意:Arch Linux 发行版未遵循建议,并python
指向 Python 3。
答案4
Python 3.x 应该可以与 16.04 兼容 - 事实上,它绝对可以兼容。我有 Ubuntu 14.04 和 Python 3.4.3 - 你要做的就是输入python3
,它会告诉你你正在运行的是什么版本。