升级到Ubuntu 18.04后如何安全地默认切换到python3


14

由于python3是Ubuntu 18.04中的默认python版本,并且python2默认情况下不会在全新的Ubuntu 18.04安装中提供该版本,因此python3在从Ubuntu 16.04升级到Ubuntu 18.04后,如何设置默认值。当前,升级到python2它后仍默认(例如,python命令直接指向python2等)。但是,清除python软件包将导致删除过多依赖该软件包的软件包,因此这里不是一个选择。

理想情况下,我想尽可能地消除python2依赖关系。也许升级过程可以这样设计:检查所有软件包,它们是否仍然真正依赖于python2依赖关系,从而收集python2可以被等效python3依赖关系取代的所有依赖关系(然后由升级解决)。


请检查新的措辞。Previous不清楚您要问什么。试图从您的帖子标题中找出答案。
Juan Antonio

非常感谢@JuanAntonio的编辑。他们大部分的编辑看起来不错。只是做了一些更正,以使此问题朝正确的方向发展。
zazi

这样安全吗,删除或保留python2的结尾是什么?如果在那里,那么就需要它!
乔治·乌德森

2
实际上,在18.04中默认情况下未安装python 2,因此,如果安装了它,那是因为您安装了一些附加软件包(或使用已安装的上述软件包进行了升级),但仍需要python2。默认为 3.x。这并不意味着在归档文件中使用2.x不会再有其他事情了。当然,20.04肯定不会再有python 2.x,因为那时它将不再受到上游的支持。
dobey

“删除python2的目的是什么”-一个相当干净的系统。我的python安装在升级后以某种方式中断。
zazi

Answers:


15

这篇文章有些陈旧,但我相信还有更好的选择:enter update-alternatives。以下将/usr/bin/python默认设置为2.7,但在需要时可使用3.6:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 20
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 10

此处的最高优先级用作“自动”选择,/usr/bin/python但您可以通过运行轻松进行切换sudo update-alternatives --config python


1
好答案。就我而言,python2.7是由nodejs / npm安装的,并以某种方式设置为的默认值python。我曾经sudo update-alternatives --remove-all python删除所有python,然后添加了我要使用的唯一python sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10。也很高兴知道sudo update-alternatives --list python是什么。
philshem

1
您可能还需要做的sudo apt install python3-pipsudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
丹尼尔

11

要完全删除python2,您必须清除python2.x-minimal软件包,方法是

sudo apt purge python2.x-minimal

用您系统上的python 2的确切版本替换x。但是请确保查看删除了哪些其他软件包,因为即使在升级后,您所携带的软件包仍然依赖python 2,并且这些软件包也将被卸载并停止工作。


没有所谓的“默认” python解释器,因为它仅取决于实际文件/usr/bin/python指向的位置,要将其更改为python,请使用ln命令更新链接,例如,假设您希望它指向python 3.6

sudo ln -sfn /usr/bin/python3.6 /usr/bin/python

另外,如果您只想为用户使用此功能,则可以在中将其设置为别名.bashrc,为此,请~/.bashrc在您选择的编辑器中打开并添加以下行

alias python='python3.6' 

“因为升级后您可能已经携带了仍依赖于python 2的软件包” <-是的,我的意图是摆脱这种依赖,因为它不是真正必要的,因为Ubuntu 18.04 python2通过使用其默认值来运行它们而无需依赖python3依赖项/软件包。
zazi

1
这样安全吗,删除或保留python2的结尾是什么?如果在那里,那么就需要它!
乔治·乌德森

0

在我的16.04 /usr/bin/python上只是一个指向的链接,/usr/bin/python2.7所以我想您只需要更改此链接即可指向/usr/bin/python3.xx当然足够)。


你也可以指出/usr/bin/python/usr/bin/python3,这是安装了最新版本python3的链接。或者只是别名或函数~/.bashrc。众多选项;-)
凯夫·英斯基

不,我想这不是我想要在这里做的。我想摆脱python2在我的系统(因为它是安装一个新的Ubuntu的18.04时,在默认情况下,python3是默认的,python2每默认不安装)
查兹

2
@zazi我不建议清除python2。似乎许多其他软件包都依赖于它。保持python2安装有任何不利之处吗?
凯夫因斯基

python2如果确实需要安装,我没有任何不利之处,但是我想清楚地将其设置python3为默认值,即,python2尽可能多地删除默认值(而全新安装的Ubuntu 18.04证明了这是可能的)。
zazi

确实如此。
凯夫·英斯基
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.