如何让“python”程序命令执行 Python 3?

Gir*_*iri 536 python python3

python程序命令执行的Python 2. Python 3中可以使用来执行python3命令。如何使用python命令执行 Python 3 ?

Rad*_*anu 577

您可以安装系统范围的软件包:

$ sudo apt install python-is-python3
Run Code Online (Sandbox Code Playgroud)

请参阅警告: Ubuntu 20.04 中的 python-is-python3 包 - 它是什么,它实际上有什么作用?

一个简单安全的方法是使用别名。将其放入~/.bashrc~/.bash_aliases归档:

alias python=python3
Run Code Online (Sandbox Code Playgroud)

在文件中添加以上内容后,运行source ~/.bashrcsource ~/.bash_aliases

例如:

$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3
Run Code Online (Sandbox Code Playgroud)

要绕过别名,请使用command内置命令:

$ command python --version
Python 2.7.6
Run Code Online (Sandbox Code Playgroud)

另一种绕过别名的方法是\在命令之前使用。

$ \python --version 
Python 2.7.6
Run Code Online (Sandbox Code Playgroud)

要在当前 shell 中禁用别名,请使用unalias内置命令:

$ unalias python
$ python --version
Python 2.7.6
Run Code Online (Sandbox Code Playgroud)

  • +1 没有理由清除 2.7 以便能够使用 3.3。由于许多软件仍然依赖于 2.7;只是让它徘徊。 (45认同)
  • 调用 `sudo python` 时,使用 `alias python='python3'` 似乎不起作用。在这种情况下,它会打开默认的 python2.7。 (12认同)
  • @begueradj [别名](http://tldp.org/LDP/abs/html/aliases.html) 与 [符号链接](http://en.wikipedia.org/wiki/Symbolic_link) 完全不同。 (10认同)
  • 警告:这可能会破坏其他需要 Python 2.7 的脚本。 (5认同)
  • 实际上我想消灭 2.7 并用 3.3 替换它。现在似乎是个坏主意.. (4认同)
  • 虽然这将允许您运行 Python3,但它不允许您从源代码安装包。'python setup.py build' 将构建 python3 代码,但 'python setup.py install' 会将它们放在您的 python2 站点包目录中。 (3认同)

Bor*_*ris 105

Ubuntu 20.04+ 上只需安装python-is-python3软件包:

sudo apt install python-is-python3
Run Code Online (Sandbox Code Playgroud)

最重要的是,您可以使用以下命令阻止 Python 2 将来作为某些内容的依赖项安装apt-mark hold

sudo apt-mark hold python2 python2-minimal python2.7 python2.7-minimal libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib 
Run Code Online (Sandbox Code Playgroud)

  • 我想知道为什么这不会影响`pip`,或者为什么甚至没有相应的包`pip-is-pip3`? (6认同)
  • 在 **Ubuntu 20.10+** `apt install python3-pip` 将安装一个 `pip` 和一个 `pip3` 命令,[这两个都是 Python 3 版本](https://bugs.launchpad.net /ubuntu/+source/what-is-python/+bug/1887098)。 (4认同)
  • 如果您有仍然需要 python2 的软件包,您不会感到惊喜,因为它们将被卸载。 (3认同)

Kev*_*vin 101

[2016 年 6 月]推荐的转换信息的地方是官方的Ubuntu Python页面。


Ubuntu 维基

对于 Ubuntu 和 Debian,我们有持续的项目目标,使 Python 3 成为发行版中默认的首选 Python 版本。

不是什么意思:

  • /usr/bin/python将指向 Python 3。不,这不会发生(除非PEP 394提倡否则,这在可预见的未来是值得怀疑的)。/usr/bin/python并且/usr/bin/python2将指向Python 2.7版和/usr/bin/python3将指向支持的最新的Python 3版本。

  • Python 2 将从存档中删除。不,这不会发生。鉴于PEP 373承诺在 2020 年之前提供上游错误修复维护支持,我们预计 Python 2.7 将在很长一段时间内在 Ubuntu 中保持支持和可用。

由于其他包依赖关系,不建议更改符号链接,但他们“有持续的项目目标,使 Python 3 成为发行版中默认的首选 Python 版本”。


对于 CLI 使用,如@Radu R?deanu,我建议在用户的~/.bashrc,.bash_aliases文件中放置一个别名(不同的文件,包括~/.bash_profile,至少加载一次,主要用于组织目的,但可能因平台而异)。Python虚拟环境也运行良好。

别名示例:

alias python=python3
Run Code Online (Sandbox Code Playgroud)

或者

alias python='/usr/bin/python3'
Run Code Online (Sandbox Code Playgroud)

脚本仍然应该使用类似的东西#!/usr/bin/env python3来实现交叉兼容性。

使用env非常适合与虚拟环境混合使用。

注意(感谢@wjandrea):别名是 bash 运行时的一部分,而不是用户环境。因此,它们对shebang ( #!)不可用。如果您更喜欢别名 python=python3,那么program.py可以通过像这样调用别名解释器来执行一些没有 shebang 的操作python program.py。别名对于具有多个版本的 python3(例如 3.4 和 3.6)的系统也很有用。

  • 别名是 Bash 内部的,而不是环境的一部分,所以你仍然需要在 shebang 中使用 `python3`,而不是 `python`。 (3认同)
  • 这现在似乎已经过时了:他们计划在 Xenial 中删除 python2,但后来没有。 (2认同)

web*_*rst 49

更新:这是错误的方式,我了解到,因为 Python2 和 Python3 不可互换。

你可以试试命令行工具update-alternatives

$ sudo update-alternatives --config python
Run Code Online (Sandbox Code Playgroud)

如果您收到错误“python 无替代方案”,请使用以下命令自行设置替代方案:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
Run Code Online (Sandbox Code Playgroud)

相应地将路径更改为/usr/bin/python3所需的 python 版本。

  • python2 和 python3 不是替代品。不要为此目的使用更新替代品。 (26认同)
  • 替代方案是相同功能的不同实现。python2 和 python3 不提供相同的功能。 (17认同)

小智 11

Ubuntu 和其他 Linux 发行版仍然在很大程度上依赖 Python 2.7 来处理许多应用程序和命令。如果将“python”的默认引用更改为 Python 3.x,那么许多 Python 函数将开始抛出断言错误。

例如,在 Ubuntu 上,除非您直接编辑文件并将 shebang 更改为引用 '#!/usr/bin/env python2.7',否则 'pip' 将不再正确运行。在 Red Hat、Fedora 和 CentOS 等 RHEL(Red Hat Enterprise Linux)风格上,“Yum”命令也依赖于 Python 2.7。

我的观点是,您会导致大量代码开始抛出断言错误,以便您可以在终端中键入“python”以引用 Python 3.x。

在终端中使用 'python3' 命令和在 Python 3.x 文件中使用 shebang '#!/usr/bin/env python3' 会更好。


Rik*_*ika 5

cd ~
gedit .bash_aliases
Run Code Online (Sandbox Code Playgroud)

然后写

alias python=python3
Run Code Online (Sandbox Code Playgroud)

或者

alias python='/usr/bin/python3'
Run Code Online (Sandbox Code Playgroud)

保存文件,关闭终端并再次打开它。
关联