在Ubuntu中无法将默认的Python版本设置为Python3

287

我试图将默认的Python版本设置为python3Ubuntu 16.04中。默认情况下是python2(2.7)。 我按照以下步骤进行:

update-alternatives --remove python /usr/bin/python2
update-alternatives --install /usr/bin/python python /usr/bin/python3

但是我在第二个语句中遇到了以下错误:

rejeesh@rejeesh-Vostro-1015:~$ update-alternatives --install /usr/bin/python python /usr/bin/python3
update-alternatives: --install needs <link> <name> <path> <priority>

Use 'update-alternatives --help' for program usage information.   

3
根据警告所述,你缺少优先级。 - greedy52
14
请注意不要删除Python 2.7,否则会瘫痪您的操作系统的许多功能(从我的经验中得知 :( )。 - Jacques de Hooge
1
一个警告:我认为将python更改为Python 3听起来不是一个好主意。调用Python 2编写的脚本的默认方式是python my-script-p2.py,而调用Python 3编写的脚本则是python3 my-script-p3.py。我预计许多系统脚本都依赖于此。 - Jan Groth
1
对于那些对此话题感兴趣的人,我建议注意虚拟环境:https://docs.python.org/3/tutorial/venv.html我的Ubuntu 18 LTS仍然使用Python 2.7,例如,我使用虚拟环境来使用Python 3.X,并在我的Django项目中保持最新。 - Viktor Born
1
这个链接可能有答案 ;) https://unix.stackexchange.com/questions/410579/change-the-python3-default-version-in-ubuntu - herr_azad
显示剩余3条评论
24个回答

574
第二行提到的内容可以更改为:
[sudo] update-alternatives --install /usr/bin/python python /usr/bin/python3 10

这会将 python3 的路径优先级设置为10。

修改 .bashrc 的替代方法的缺点是,使用带有 sudo 的命令将不起作用。


7
好的,简单的出路。 - PrakashG
10
很好,直截了当。错误消息中的"<priority>"已经暗示了这一点。顺便说一下,通常需要使用"sudo"才能运行此安装命令。 - ywu
4
像ywu所说的那样,我必须运行“sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10”。 - Royal
3
这确实是正确的方法,但值得注意的是更改系统范围内的默认设置可能会破坏某些东西。例如,我不得不去对Terminator应用修复程序,它只适用于Python2。 - Dale C. Anderson
2
完全不起作用 - 在运行此命令后,python 运行 python3,但 python-config 仍然运行 python2-config,导致一般性故障。 - Chris Dodd
显示剩余6条评论

192

编辑:

我年轻而幼稚时写下了这篇文章,update-alternatives是更好的方法。请查看@Pardhu的答案。


过时的回答:

打开你的 .bashrc 文件 nano ~/.bashrc。在文件顶部新起一行,输入alias python=python3,然后使用ctrl+o保存文件,使用ctrl+x关闭文件。然后,在你的命令行中输入source ~/.bashrc。现在你的别名应该是永久性的。


92
这是错误的答案。编辑您的bashrc文件不能达到与update-alternatives相同的效果。例如,以“#!/usr/bin/env python”开头的脚本将不使用bashrc文件中的版本。请使用@Pardhu的答案。 - stonewareslord
1
这更像是对具有此问题的用户的警告,更改别名并不会产生相同的效果。如果您想编辑,那就由您决定。 - stonewareslord
1
@alexchenco,你没有在最后添加优先级。在python3.5.2之后,你应该加上类似于10的东西。 - Ajeetkumar
4
我做了这件事,结果破坏了一些东西,例如虚拟环境。这个答案正在制造更多的问题。 - Kuzeko
1
也许最好使用@Pardhu的答案。 - Milad Yarmohammadi
显示剩余4条评论

93

将Ubuntu 18.04中默认的Python 3.6.8更改为Python 3.7。

安装Python 3.7

安装Python 3.7并将其配置为默认解释器的步骤。

  1. 使用apt-get安装python3.7包

    sudo apt-get install python3.7

  2. 将Python3.6和Python 3.7添加到update-alternatives

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
  1. 将Python 3更新为Python 3.7

    sudo update-alternatives --config python3 输入2以选择Python 3.7

  2. 测试Python版本

python3 --version
Python 3.7.1 

7
你可能需要加上一个警告,说明这可能会破坏打包软件。Python 3.6是默认分发版本,任何捆绑软件包也会假定该版本。 - Tim
我可以将Python替换为3.7版本,而不是Python3吗? - Wee Hong
@Tim,最好的方法是怎样照顾它? - doobeedoobee
@Wee Hong,是的,你可以这样做。不用 $ sudo update-alternative --install /usr/bin/python3 python3 .... 而是直接替换为 $ sudo update-alterative --install /usr/bin/python python ..... 然后运行: sudo update-alternatives --config python. - Arthur Zennig
对我来说起作用了,但我意识到系统中有一些旧的软件包,其中有python2的预删除脚本。所以我无法卸载它们 - 必须切换回python2才能删除它们... - Roman

72
如果您使用的是Ubuntu 20.04 LTS(Focal Fossa),则可以安装python-is-python3:python-is-python3
sudo apt install python-is-python3

将符号链接 /usr/bin/python 替换为指向 /usr/bin/python3 的位置。


2
小错误:Ubuntu Focal 是 20.04,不是 20.20。 - Conchylicultor
1
这正是我想要的,不仅仅是一个别名。谢谢 :) - Tien Do
2
因为这是关于最新的发行版,我建议使用apt而不是apt-get来执行install子命令。 - Shiplu Mokaddim

32
要切换到Python3,你可以在终端中使用以下命令:alias python=python3

6
这只适用于当前终端中运行的进程。如果我关闭并重新打开终端,它会恢复为Python2。 - RejeeshChandran
2
@RejeeshChandran 看看 Steampunkery 的回答。 - Seraf

26

更新:
自Ubuntu 20.04版本起,Python3成为默认版本,但是默认情况下仍未将python注册为python3。要实现这一点,您只需执行以下操作:

sudo apt install python-is-python3

要获取更多信息,您可以查看此链接
旧方式:

Do

cd ~
gedit .bash_aliases

然后写下以下任一内容

alias python=python3
或者
alias python='/usr/bin/python3'

保存文件,关闭终端并重新打开。
现在应该没问题了!链接


sudo apt install python-is-python3 对我有用。+1 - NMukama

20

一种简单而安全的方法是使用别名(alias)。将以下内容添加到~/.bashrc文件中:

如果你有gedit编辑器,请使用

gedit ~/.bashrc

进入bashrc文件,然后在文件顶部进行以下更改:

alias python=python3

在文件中添加以上内容后,运行以下命令:

source ~/.bash_aliases 或 source ~/.bashrc

例如:

$ python --version

Python 2.7.6

$ python3 --version

Python 3.4.3

$ alias python=python3

$ python --version

Python 3.4.3


19

按照以下步骤更改默认的Python版本为新升级的Python版本,这对我很有用。

  • sudo apt-install python3.7 安装您需要的最新版本的Python
  • cd /usr/bin 进入安装Python的根目录
  • sudo unlink pythonsudo unlink python3。取消链接当前的默认Python
  • sudo ln -sv /usr/bin/python3.7 python 链接新下载的Python版本
  • python --version 检查新的Python版本,然后就可以使用了

13

首先安装Python3和pip3

sudo apt-get install python3 python3-pip

然后在您的终端中运行

alias python=python3

检查您的机器上Python版本。

python --version

10

额外添加的内容,您还可以为pip添加别名(在.bashrc或bash_aliases中):

alias pip='pip3'

您可能会发现干净安装的python3实际上指向python3.x,这时您可能需要:

alias pip='pip3.6'
alias python='python3.6'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接