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

Posted

技术标签:

【中文标题】无法在 ubuntu 中将默认 python 版本设置为 python3【英文标题】:Unable to set default python version to python3 in ubuntu 【发布时间】:2017-06-18 14:19:54 【问题描述】:

我试图在Ubuntu 16.04 中将默认python 版本设置为python3。默认为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 新手,我不知道自己做错了什么。

【问题讨论】:

如警告中所述,您缺少优先级。 注意不要删除 Python 2.7,因为它会削弱您操作系统的许多功能(根据经验:() 一句警告:将python 更改为Python 3 对我来说是个坏主意。调用用Python 2 编写的脚本的默认方法是python my-script-p2.py,而它是python3 my-script-p3.py .我希望许多系统脚本都依赖于此。 对这个话题感兴趣的朋友我建议关注一下虚拟环境:docs.python.org/3/tutorial/venv.html我的Ubuntu 18 LTS还是用Python 2.7,比如我用的是虚拟环境使用 Python 3.X 并在我的 Django 项目中保持最新状态。 这个链接可能有答案 ;) unix.stackexchange.com/questions/410579/… 【参考方案1】:

提到的第二行可以改成

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

这为python3 的路径提供了10 的优先级。

交替编辑.bashrc的缺点是使用带有sudo的命令将不起作用。

【讨论】:

好而简单的出路。 很好,切中要害。错误消息中的“”已经建议了它。顺便说一句,运行此安装命令通常需要“sudo”。 就像 ywu 说的,我必须运行“sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10” 这肯定是正确的方法,但值得注意的是,更改系统范围的默认值可能会破坏一些事情。例如,我必须去apply a fix to terminator,它只适用于python2。 不能完全工作 -- 在此命令 python 运行 python3 之后,但 python-config 仍然运行 python2-config 并出现一般破损【参考方案2】:

编辑:

这是我年轻天真的写的,update-alternatives 是更好的方法。请参阅@Pardhu 的回答。


过时的答案:

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

【讨论】:

这是错误的答案。编辑 bashrc 与 update-alternatives 不同。例如,以#!/usr/bin/env python 开头的脚本将不会使用 bashrc 中的版本。请使用@Pardhu 的答案。 我很久以前写过这个答案,我知道更新替代方案与更改 bashrc 不同。如果您愿意,我可以编辑答案。 对于有这个问题的用户来说,更改别名不会做同样的事情,这更像是一个警告。如果您想编辑,由您决定。 这是唯一对我有帮助的答案。我试着做sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5.2But I got: update-alternatives: --install needs &lt;link&gt; &lt;name&gt; &lt;path&gt; &lt;priority&gt; Use 'update-alternatives --help' for program usage information. 我这样做了,但它破坏了一些东西,比如 virtualenvs。这个答案正在制造更多问题【参考方案3】:

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

安装 Python 3.7

安装 Python3.7 并将其配置为默认解释器的步骤。

    使用apt-get安装python3.7包

    sudo apt-get install python3.7

    将 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

    更新 Python 3 以指向 Python 3.7

    sudo update-alternatives --config python3 对于 Python 3.7 输入 2

    测试python的版本

python3 --version
Python 3.7.1 

【讨论】:

您可能希望包含一个警告,指出这可能会破坏打包软件。 Python 3.6 是分布式默认版本,任何捆绑的软件包也将采用此版本。 我可以将python替换为3.7版本而不是python3吗? @Tim,最好的办法是什么? @Wee Hong,是的,你可以。而不是 $ sudo update-alternative --install /usr/bin/python3 python3 .... 你只需替换为 $ sudo update-alternative --install /usr/bin/python python ..... 和之后: sudo update -alternatives --config python。 为我工作,但我意识到我的系统中有一些旧包具有 python2 预删除脚本。所以我无法卸载它们 - 必须切换回 python2 才能删除它们......【参考方案4】:

如果你有 Ubuntu 20.04 LTS (Focal Fossa) 你可以安装python-is-python3:

sudo apt install python-is-python3

/usr/bin/python 中的符号链接替换为指向/usr/bin/python3

【讨论】:

小错误:Ubuntu Focal 是 20.04,而不是 20.20 这就是我想要的,而不仅仅是一个别名。谢谢:) 因为这是最新的发行版,我建议使用apt 而不是apt-get 来作为install 子命令。【参考方案5】:

要更改为python3,您可以在终端alias python=python3中使用以下命令。

【讨论】:

但这仅适用于终端中当前正在运行的进程。如果我关闭并打开终端,它将变回 python2。 @RejeeshChandran 看看 Steampunkery 的回答【参考方案6】:

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

gedit ~/.bashrc

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

别名 python=python3

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

source ~/.bash_aliases 或 source ~/.bashrc

示例:

$ python --version

Python 2.7.6

$ python3 --version

Python 3.4.3

$ 别名 python=python3

$ python --version

Python 3.4.3

【讨论】:

【参考方案7】:

只需按照以下步骤帮助将默认 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版本,你很高兴

【讨论】:

【参考方案8】:

首先安装python3和pip3

sudo apt-get install python3 python3-pip

然后在你的终端运行

alias python=python3

检查你机器上的python版本。

python --version

【讨论】:

【参考方案9】:

作为额外的附加功能,您也可以为 pip 添加别名(在 .bashrc 或 bash_aliases 中):

别名 pip='pip3'

很多人发现一个全新安装的python3实际上指向python3.x,所以你可能需要:

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

【讨论】:

【参考方案10】:

更新: 从 Ubuntu 20.04 开始,python3 是默认版本,但默认情况下,python 并未注册为 python3。为了实现这一点,您只需这样做:

sudo apt install python-is-python3

有关更多信息,您可以查看this out。旧方式:

cd ~
gedit .bash_aliases

然后写任一

alias python=python3

alias python='/usr/bin/python3'

保存文件,关闭终端并再次打开。 你现在应该没事了! Link

【讨论】:

【参考方案11】:

这是一种适合我的简单方法。

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

您可以将/usr/bin/python3 更改为 python3 的路径(或您想要的版本)。

但请记住,update-alternatives 可能是最佳选择。

【讨论】:

【参考方案12】:

正如它所说,update-alternatives --install 需要 参数。

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

update-alternatives --help 说:

是一个整数;数字越大的选项在自动模式下的优先级越高。

所以只需在末尾添加100 或其他内容

【讨论】:

【参考方案13】:

要将 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版本。

最后一个参数指定它的优先级意味着,如果没有进行手动替代选择,将设置具有最高优先级编号的替代。在我们的例子中,我们为/usr/bin/python3.6.8 设置了优先级2,因此/usr/bin/python3.6.8 被update-alternatives 命令自动设置为默认python 版本。

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

update-alternatives --config python

【讨论】:

【参考方案14】:

获取python路径

ls /usr/bin/python*

然后设置你的python版本

alias python="/usr/bin/python3"

【讨论】:

【参考方案15】:

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

# 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 将在新的 shell 中准备就绪。

【讨论】:

【参考方案16】:

只需删除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

【讨论】:

【参考方案17】:

在 Linux 终端中添加默认 python 的优先级:

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

在这里,我们将python3 设置为优先级10,将python2 设置为优先级1。这将使python3 成为默认python。如果您希望 Python2 作为默认值,则将 python2 的优先级设置为高于 python3

【讨论】:

【参考方案18】:

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

【讨论】:

【参考方案19】:
sudo rm /usr/bin/python3 #remove existing link
sudo ln /usr/bin/python3.8 /usr/bin/python3 # create a new link to the version of your choice

【讨论】:

看起来有点像大锤解决方案,但我想它会起作用。以后安装更新时是否稳定,或者这是您在重大更新后可能需要重做的事情?请注意,这可能正是我会做的......【参考方案20】:

您没有包含优先级参数

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

您可以将 5 替换为您想要的任何优先级。较高优先级的替代方案优先于较低优先级。

【讨论】:

【参考方案21】:

如果有可能直接使用特定的 python 版本,与update-alternativesalias 解决方案相比,我会选择它。

例如

python3.6 -m pip install pytest
ptyhon3.6 -m pytest test_sample.py

-m 为该特定 python 版本执行特定模块。 第一行将为该特定版本和用户在可能的位置安装 pytest /home/user/.local/lib/python3.5/site-packages

【讨论】:

【参考方案22】:

在我的情况下,它发生在我在终端中运行此命令时 “别名python=python3”

【讨论】:

【参考方案23】:

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

转到您的终端并输入:

cd ~/ 转到您的主目录

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

或者,输入open -e .bash_profile 来编辑文件。

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

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

python --version

您应该会看到 python 3.x.y 是您的默认版本。

干杯!

【讨论】:

此方法已在此问题的首选答案中描述。而你的回答没有任何帮助。

以上是关于无法在 ubuntu 中将默认 python 版本设置为 python3的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu16.04中将python3设置为默认

ubuntu16.04中将python3设置为默认

ubuntu16.04中将python3设置为默认

ubuntu16.04中将python3设置为默认

如何在Ubuntu中将mod_wsgi安装到特定的python版本?

ubuntu16.04中将python3设置为默认