ChatGPT解决这个技术问题 Extra ChatGPT

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

我试图在 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.   
如警告中所述,您缺少优先级。
注意不要删除 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/…

N
Nico Schlömer

提到的第二行可以更改为

[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 并出现一般损坏
N
Nico Schlömer

编辑:

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

过时的答案:

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


这是错误的答案。编辑 bashrc 与 update-alternatives 不同。例如,以 #!/usr/bin/env python 开头的脚本将不会使用 bashrc 中的版本。请使用@Pardhu 的回答。
对于有这个问题的用户来说,更改别名不会做同样的事情,这更像是一个警告。如果您想编辑,由您决定。
@alexchenco您最后没有添加优先级。在 python3.5.2 之后,您应该放置类似 10 的内容
我这样做了,它破坏了一些东西,比如 virtualenvs。这个答案正在制造更多问题
也许最好使用@Pardhu 的答案
A
Alvin Sartor

将 Python 3.6.8 作为 Ubuntu 18.04 中的默认设置更改为 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 输入 2 表示 Python 3.7 测试 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-alterative --install /usr/bin/python python ..... 和之后: sudo update -alternatives --config python。
为我工作,但我意识到我在系统中有一些旧包有 python2 预删除脚本。所以我无法卸载它们 - 必须切换回 python2 才能删除它们......
s
silviot

如果您有 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 子命令。
D
DanteVoronoi

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


但这仅适用于终端中当前正在运行的进程。如果我关闭并打开终端,它将变回 python2。
@RejeeshChandran 看看 Steampunkery 的回答
C
Community

一个简单的安全方法是使用别名。将其放入 ~/.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 $ alias python=python3 $ python --version Python 3.4.3


S
Shorya Sharma

只需按照以下步骤帮助将默认 python 更改为新升级的 python 版本。对我来说效果很好。

sudo apt-install python3.7 安装你想要的最新版python

cd /usr/bin 进入安装python的根目录

sudo unlink python 或 sudo unlink python3 。取消链接当前默认的python

sudo ln -sv /usr/bin/python3.7 python 链接新下载的python版本

python --version 检查新的python版本,你很高兴


H
Hossein

更新:从 Ubuntu 20.04 开始,python3 是默认版本,但默认情况下,python 并未注册为 python3。为了实现这一点,您可以简单地执行以下操作:

sudo apt install python-is-python3

如需更多信息,您可以查看this
旧方式:

cd ~
gedit .bash_aliases

然后写要么

alias python=python3

或者

alias python='/usr/bin/python3'

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


佚名

首先安装python3和pip3

sudo apt-get install python3 python3-pip

然后在你的终端运行

alias python=python3

检查您机器中的 python 版本。

python --version

P
Paraic

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

别名 pip='pip3'

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

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


c
cbcram

这是一种对我有用的简单方法。

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

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

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


u
user7502402

正如它所说,update-alternatives --install 需要 <link> <名字> <路径>和 <优先级>论据。

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

update-alternatives --help 说:

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

所以只需在最后放一个 100 或其他东西


p
pradeep karunathilaka

获取python路径

ls /usr/bin/python*

然后设置你的python版本

alias python="/usr/bin/python3"

R
Ranjeet Singh

要将 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

t
tdihp

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

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


F
Farab Alipanah

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

S
SouMitya chauhan

通过添加以下内容为 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


U
Udesh Ranjan
       ~$ sudo apt-get install python3.9
/usr/bin$ cd /usr/bin
/usr/bin$ sudo unlink python3
/usr/bin$ sudo ln -sv /usr/bin/python3.9 python3
/usr/bin$ python3 --version
          Python 3.9.5
/usr/bin$ pip3 --version
          pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.9)

M
Mian Asbat Ahmad

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

S
Sajibe Kanti
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

似乎有点像大锤解决方案,但我想它会起作用。以后安装更新时是否稳定,或者这是您在重大更新后可能需要重做的事情?请注意,这可能正是我会做的......
V
Vishad Goyal

您没有包含优先级参数

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

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


J
JanPo

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

前任。

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

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


M
Mohammed Shabeer

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


n
nurealam siddiq

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

转到您的终端并输入:

cd ~/ 转到您的主目录

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

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

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

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

python --version

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

干杯!


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