将默认 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/python
shebang。所以它们不会破裂。但你是对的python
应该启动 2.x python 可执行文件。
是的。 egrep -R '#! */usr/bin/env +python' /usr/bin
告诉我,在 Ubuntu 上,系统工具通常是免疫的。但受影响的程序包括scons
、hg-ssh
或purple-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 更改为另一个版本的主要内容,如果未能解决你的问题,请参考以下文章
如何将 xampp localhost 更改为另一个文件夹(在 xampp 文件夹之外)?
如何通过主视图模型将 UserControl 内容更改为另一个 UserControl。如何在内容之间导航
将 Illuminate\database 默认返回类型的 Illuminate\Support\Collection 更改为数组版本 5.8