无法在 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
的命令将不起作用。
【讨论】:
好而简单的出路。 很好,切中要害。错误消息中的“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.2
。 But I got: update-alternatives: --install needs <link> <name> <path> <priority> 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 python
或 sudo 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-alternatives
和alias
解决方案相比,我会选择它。
例如
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的主要内容,如果未能解决你的问题,请参考以下文章