无法在ubuntu中将默认python版本设置为python3


146

我试图将默认python版本设置为python3in Ubuntu 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.   

我是Ubuntu的新手,我不知道自己在做什么错。


3
如警告中所述,您缺少优先级。
greedy52 '17

6
注意不要删除Python 2.7,因为它会削弱您操作系统的许多功能(根据经验:()
Jacques de Hooge,2017年

我针对您的优先级错误对答案进行了修改。
Steampunkery

1
一个警告:对我来说,改用pythonPython 3 听起来是个坏主意。调用Python 2编写的脚本的默认方式是python my-script-p2.py,而它是python3 my-script-p3.py。我希望许多系统脚本都可以依靠它。
jan groth19年

1
对于那些对此主题感兴趣的人,建议您注意虚拟环境:docs.python.org/3/tutorial/venv.html 我的Ubuntu 18 LTS仍使用Python 2.7,例如,我使用虚拟环境以使用Python 3.X,并且在我的Django项目中是最新的。
维克多·比约恩

Answers:


135

打开您的.bashrc文件nano ~/.bashrcalias python=python3在文件顶部的新行上键入,然后使用ctrl + o保存文件并使用ctrl + x关闭文件。然后,返回您的命令行类型source ~/.bashrc。现在,您的别名应该是永久的。

编辑:

对于更新替代方案,优先级是整数。优先级表示应该首先使用哪个程序。文章总结说起来相当不错。


58
这是错误的答案。编辑您的bashrc与update-alternatives的功能不同。例如,开头的脚本#!/usr/bin/env python将不使用bashrc中的版本。请使用@Pardhu的答案。
stonewareslord

我很久以前就写了这个答案,并且我知道更新替代方法与更改bashrc不同。如果您愿意,我可以编辑答案。
Steampunkery

1
对于这个问题的用户更像是警告,更改别名不会做同样的事情。如果要编辑,由您决定。
stonewareslord

这是唯一帮助我的答案。我试着做sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5.2But I got: update-alternatives: --install needs <link> <name> <path> <priority> Use 'update-alternatives --help' for program usage information.
alexchenco

1
我这样做了,它破坏了诸如virtualenvs之类的东西。这个答案正在制造更多的问题
Kuzeko

294

提到的第二行可以更改为

update-alternatives --install /usr/bin/python python /usr/bin/python3 10

的路径优先级为10 python3。编辑.bashrc文件的缺点是,当与结合使用命令时,它将不起作用sudo

更新:sudo在运行以下命令时使用:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10


3
好又容易的出路。
PrakashG

7
正确而正确。错误消息中的“ <优先级>”已经建议了它。顺便说一句,运行此安装命令通常需要“ sudo”。
ywu

4
就像ywu所说的,我必须运行“ sudo update-alternatives --install / usr / bin / python python / usr / bin / python3 10”
Roy

3
当然,这是正确的方法,但值得注意的是,更改系统范围的默认值可能会破坏某些功能。例如,我必须去对terminator应用修复程序,该修复程序仅适用于python2。
Dale Anderson

1
不能完全正常工作-在此命令python运行后python3,但python-config仍在运行python2-config,随后发生了一般性破损
克里斯·多德

36

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

安装Python 3.7

安装Python3.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 为Python 3.7输入2

  2. 测试python版本

python3 --v
Python 3.7.1 

3
您可能需要添加警告,以免破坏打包的软件。Python 3.6是分布式默认值,所有捆绑的软件包也将采用此版本。
蒂姆(Tim)

这对我有帮助。谢谢。
jeffry copps

我可以将python替换为3.7版本而不是python3吗?
凌晨香港

@Tim,解决这个问题的最佳方法是什么?
Shreya

@Wee Hong,是的,可以。代替$ sudo update-alternative --install / usr / bin / python3 python3 ....您只需替换为$ sudo update-alternative --install / usr / bin / python python .....及之后:sudo update -alternatives --config python。
亚瑟·曾尼格

23

要更改为python3,可以在terminal中使用以下命令alias python=python3


4
但这仅适用于终端中当前运行的进程。如果我关闭并打开终端,它将更改回python2。
RejeeshChandran'2

2
@RejeeshChandran看看Steampunkery的答案
Seraf

14

一种简单安全的方法是使用别名。将其放入〜/ .bashrc文件中:如果您使用gedit编辑器

gedit〜/ .bashrc

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

别名python = python3

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

源〜/ .bash_aliases或源〜/ .bashrc

例:

$ python-版本

Python 2.7.6

$ python3-版本

Python 3.4.3

$别名python = python3

$ python-版本

Python 3.4.3


9

另外,您还可以为pip添加一个别名(在.bashrc或bash_aliases中):

别名pip ='pip3'

许多人发现python3的全新安装实际上指向python3.x,因此您可能需要:

别名pip ='pip3.6'
别名python ='python3.6'


8

首先安装python3和pip3

sudo apt-get install python3 python3-pip

然后在终端运行

alias python=python3

检查计算机中的python版本。

python --version

7

如果您具有Ubuntu Focal(20.20),则可以安装python-is-python3

sudo apt-get install python-is-python3

替换符号链接/usr/bin/python以指向/usr/bin/python3.8


5

就像说的那样 update-alternatives --install需要<link> <name> <path>和<priority>参数。

您具有链接(/usr/bin/python),名称(python)和路径(/usr/bin/python3),但缺少优先级。

update-alternatives --help 说:

<priority>是整数;数字更大的选项在自动模式下具有更高的优先级。

所以100在末尾放一个


5

cd ~
gedit .bash_aliases

然后写

alias python=python3

要么

alias python='/usr/bin/python3'

保存文件,关闭终端,然后再次打开。
您现在应该很好!链接


5

只需按照以下步骤操作,即可将默认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版本,您一切顺利

3

对于另一种仅限于当前用户的非侵入式方法:

# First, make $HOME/bin, which will be automatically added to user's PATH
mkdir -p ~/bin
# make link actual python binaries
ln -s $(which python3) python
ln -s $(which pip3) pip

python pip 将在新的外壳中准备好。



0

适用于所有用户的ubuntu 18.04中的最佳方法是

sudo vim /etc/bash.bashrc
add lines
alias python=python3
alias pip=pip3

保存更改并重新启动。

重新启动后,系统中的python 3版本以及python 2.7都将作为默认版本。如果您使用的是python 3的多个版本,则可以通过在别名中说以下内容来更加具体。

sudo vim /etc/bash.bashrc
add lines
alias python=python3.6
alias pip=pip3.6

0

只需删除python-is-python2

sudo apt purge python-is-python2

并安装python-is-python3

sudo apt install python-is-python3

它将自动过渡到新的python3。(可选)您可以稍后删除其余软件包:

sudo apt autoremove && sudo apt autoclean

0

要将Python 3.6.8从Python 2.7更改为Ubuntu 18.04中的默认设置,可以尝试使用命令行工具update-alternatives

sudo update-alternatives --config python

如果出现错误“ python没有替代品”,请使用以下命令自己设置替代品:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2

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

优先级指定的最后一个参数表示,如果未进行手动替代选择,则将设置优先级最高的替代项。在我们的示例中,我们为设置了优先级2,/usr/bin/python3.6.8因此/usr/bin/python3.6.8update-alternatives命令自动将其设置为默认python版本。

我们可以随时使用以下命令在上面列出的python替代版本之间切换,并输入选择编号:

update-alternatives --config python

-1

首先,确保您的计算机上安装了Python3

转到终端并输入:

cd ~/ 转到您的主目录

如果尚未设置,请.bash_profile键入touch .bash_profile以创建.bash_profile。

或者,键入open -e .bash_profile以编辑文件。

复制并保存alias python=python3在.bash_profile中。

关闭并重新打开您的终端。然后键入以下命令以检查是否 Python3现在是您的默认版本:

python --version

您应该看到python 3.xy是您的默认版本。

干杯!


此问题的首选答案中已经介绍了此方法。而且您的答案没有任何帮助。
Tripulse
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.