将默认 python 更改为另一个版本

Posted

技术标签:

【中文标题】将默认 python 更改为另一个版本【英文标题】:Changing default python to another version 【发布时间】:2011-10-06 19:47:31 【问题描述】:

目前当我使用“python”命令时,它指向python2.6。我已经安装了 python3.1,我希望“python”命令指向 python3.1。怎么可能?

mahmood@mpc:~$ which python 
/usr/bin/python
mahmood@mpc:~$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 2010-11-24 16:14 /usr/bin/python -> python2.6
mahmood@mpc:~$ uname -a
Linux orca 2.6.32-24-server #39-Ubuntu SMP Wed Jul 28 06:21:40 UTC 2010 x86_64 GNU/Linux

【问题讨论】:

您需要更改环境的PATH 变量。根据您使用的平台,这会有所不同,但无论哪种方式,重点都是在 Python2 路径之前列出 Python3 路径。 哪个操作系统?在 linux 上你可能不想这样做 我已经编辑了帖子。请再次检查:) 【参考方案1】:

因为你有 Linux,如果你想简单地输入“python”而不是“python3”来运行 Python 程序,一个解决方案就是在你的 shell 配置文件(.bashrc 等)中定义一个别名。 .对于 Bourne shell,它应该类似于

alias python=python3

(或任何你的 Python 3 名称)。

这样,您不必更改系统上的任何内容,因此该解决方案应该是无害的,并且不会破坏您的系统。

【讨论】:

【参考方案2】:

您真的不想更改 python 指向的内容,因为某些程序可能期望 Python 2 并中断。

解决方案是使用virtualenv:创建一个隔离的Python 3 环境(使用-p python3 选项),激活它,然后就可以开始了。

【讨论】:

正确的系统工具使用#!/path/to/pythonshebang。所以它们不会破裂。但你是对的python 应该启动 2.x python 可执行文件。 是的。 egrep -R '#! */usr/bin/env +python' /usr/bin 告诉我,在 Ubuntu 上,系统工具通常是免疫的。但受影响的程序包括sconshg-sshpurple-url-handler,更糟糕的是quodlibet 通常不是从终端启动的(所以我想它会默默地失败)。我将“系统工具”更改为“程序”。【参考方案3】:
unlink /usr/bin/python
ln -s /usr/bin/python3.1 /usr/bin/python

【讨论】:

实际上没有必要取消链接。使用武力! (...标志)ln -sf /usr/bin/python3.1 /usr/bin/python【参考方案4】:

这是不可取的。

您可以在自己的脚本顶部写(shebang):

#!/usr/bin/env python3

如果您使用的是 Windows,请安装 pylauncher。它理解#!

在 Linux 上使您的脚本可执行,运行一次:

$ chmod +x your-script

之后,运行你的脚本:

$ ./your-script

如@Petr Viktorin 指出的那样,您可以创建virtualenv 进行交互使用。安装/升级(来自 Ubuntu 存储库的版本太旧):

$ pip install -U virtualenv,wrapper

按照/path/to/virtualenvwrapper.sh 中的说明,创建使用python3 的virtualenv:

$ mkvirtualenv --python python3 py3

激活 virtualenv:

$ workon py3

在活动的 virtualenv 中,python 指的是/path/virtualenv/bin/python。所以你可以运行:

$ python your_module.py

【讨论】:

这种情况下,不要像python myapp.py那样启动程序,而是像./myapp.py那样像普通程序一样执行 @Mika:对于交互式命令行virtualenv 应该使用@Petr Viktorin 指出的那样。因此python myapp.py 将使用python3 啊,所以virtualenv 会覆盖shebang?很高兴知道。 @Mika: python myapp.py 始终使用python 当前所指的任何内容;不管shebang; virtualenv 是否处于活动状态。正如您所写:shebang 仅在 Linux 上使用,然后您将脚本运行为 your-script:example【参考方案5】:

您可以按照以下步骤操作:

sudo rm /usr/bin/python

sudo ln -s /usr/bin/python3.1 /usr/bin/python

但是正如 Petr Viktorin 已经说过的,任何期望 python v2 的程序都会停止工作。所以谨慎使用。您可以通过运行撤消更改:

sudo rm /usr/bin/python

sudo ln -s /usr/bin/python2.6 /usr/bin/python

【讨论】:

【参考方案6】:

在 Linux/Mac OS 上,您可以使用 python3 而不是 python

【讨论】:

并非所有平台都如此。例如,在 Windows 上,Python3.x 程序仅称为 python.exe 我希望能更正我的疏忽而不是投反对票。 只是让你知道,我不是反对你的人。这个答案不应该是否定的。 +1

以上是关于将默认 python 更改为另一个版本的主要内容,如果未能解决你的问题,请参考以下文章

将默认dict更改为嵌套字典

如何将 xampp localhost 更改为另一个文件夹(在 xampp 文件夹之外)?

如何通过主视图模型将 UserControl 内容更改为另一个 UserControl。如何在内容之间导航

将 Illuminate\database 默认返回类型的 Illuminate\Support\Collection 更改为数组版本 5.8

将 iframe URL 更改为另一个协议会重新加载页面,但不会在从计时器触发时重新加载

将 Cocos 2d 方向横向更改为纵向