抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

Ubuntu Python 3.6 更新到 3.8 以及 pip 更新的坑

背景:之前写过 Mac 环境的 Python 整理,一直以来没有折腾过 Ubuntu 的 Python 环境(或者忘了),记录一下。

系统:elementary OS 5.1.7 Hera(基于 Ubuntu 18.04.6 LTS 构建)

查看当前版本以及相关路径

查看当前系统 Python3 使用的版本:

python3 -V

查看这些版本所处的目录:

python3 -c 'import sys;print(sys.path)'

不出意外的话,会有N 个版本,而对于Ubuntu 不要乱删,一般系统会使用 Python2.7(历史程序遗留),以及 Python3.X(当前系统需要),而我们则需要手动安装一个 Python3.8 或者更新的版本。

安装

由于 Ubuntu 源的滞后性,一般都需要三方 ppa:

sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.8

其他方式还有源码编译的方式,Python 这种安装量很大的软件一般不需要自己折腾。安装完再查看Python 版本会发现还是旧版本。

版本切换

这里需要介绍一个很神奇的包:update-alternatives,当然看名字就知道,是一个在多个软件版本间切换的工具,Linux主要靠二进制执行文件链接到 bin,很多时候我们手动去重新链接移除都繁琐而且容易出错,这才有了这种工具。

创建好两个版本的关联关系(–install 对应参数是 执行文件的链接位置 关联链名 对应二进制文件真正的执行路径 序号):

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2

接下来就可以随意切换版本了:

sudo update-alternatives --config python3
有 2 个候选项可用于替换 python3 (提供 /usr/bin/python3)。

  选择       路径              优先级  状态
------------------------------------------------------------
* 0            /usr/bin/python3.8   2         自动模式
  1            /usr/bin/python3.6   1         手动模式
  2            /usr/bin/python3.8   2         手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:

相信很容易做版本选择,选完再查看版本就是自己选择的版本了。

更新 pip

只有当 Python 版本对的时候更新的 pip 才是对应的版本的新版本。命令很简单:

python -m pip install --upgrade pip

或者不放心指定版本也行:

python3.8 -m pip install --upgrade pip

其他该做啥就做啥~

关于无法使用 apt 更新的问题

ModuleNotFoundError: No module named ‘apt_pkg’

系统需要 Python3.6 作为 apt update 更新基础,所以老老实实切回 Python3.6 ~(不推荐卸载 python3-apt ,对于类似 EOS 的定制系统会丢失很多系统包)

以上;

参考:

https://phoenixnap.com/kb/how-to-install-python-3-ubuntu


本站由以下主机服务商提供服务支持:

1条评论

发表评论