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

zaz*_*azi 33 upgrade python python3 18.04

由于python3是 Ubuntu 18.04 中的默认 Python 版本,并且python2不会在全新的 Ubuntu 18.04 安装中python3默认提供,因此在升级到 Ubuntu 18.04(从 16.04 开始)后如何设置默认值。目前,升级后python2它仍然默认(例如python命令指向python2等)。但是,清除python包会导致删除太多依赖它的包,因此这里不提供此选项。

理想情况下,我想尽可能地消除python2依赖。也许升级过程可以设计成这样一种方式,它检查所有包,它们是否仍然真正依赖python2依赖项,从而收集所有python2可以被等效python3依赖项替换的依赖项(然后将通过升级解决)。

小智 34

这篇文章有点旧,但我相信存在更好的选择: 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
Run Code Online (Sandbox Code Playgroud)

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

  • 很好的答案。就我而言,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` 看看是什么。 (2认同)
  • 你可能还想做`sudo apt install python3-pip`和`sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10` (2认同)

Ami*_* KK 16

要完全删除python2,您必须清除python2.x-minimal

sudo apt purge python2.x-minimal
Run Code Online (Sandbox Code Playgroud)

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


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

sudo ln -sfn /usr/bin/python3.6 /usr/bin/python
Run Code Online (Sandbox Code Playgroud)

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

alias python='python3.6' 
Run Code Online (Sandbox Code Playgroud)


xen*_*oid 1

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

  • @zazi 我不建议清除`python2`。似乎许多其他包都依赖于它。保留“python2”安装有什么缺点吗? (2认同)