ubuntu升级python后ModuleNotFoundError: No module named 'apt_pkg'异常

ubuntu 18.04默认的python3的版本为3.6,各种原因需要升级python版本

升级python版本
  • 升级python

首先更新软件包列表并安装必备组件

sudo apt update
sudo apt install software-properties-common

添加PPA

sudo add-apt-repository ppa:deadsnakes/ppa

安装Python 3.8(以3.8版本为例)

sudo apt install python3.8
  • 配置 python3.8 为系统默认 python3

将 python 各版本添加到 update-alternatives

⇒  which python3.8
/usr/bin/python3.8
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1

⇒  which python3.6
/usr/bin/python3.6
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

配置 python3 默认指向 python3.8

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

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

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

输入 2(python3.8前的序号), 回车.完成设置

升级python版本后的异常
  • 升级完python版本后,会出现异常
ModuleNotFoundError: No module named 'apt_pkg'
解决方法
cd /usr/lib/python3/dist-packages/
  • 复制
sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so  apt_pkg.cpython-38m-x86_64-linux-gnu.so
sudo ln -s apt_pkg.cpython-38m-x86_64-linux-gnu.so apt_pkg.so

如果报错,则执行下方命令,强制添加

sudo ln -fs apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so
上一篇:archlinux的安装是如何从源码到二进制


下一篇:13 理解包导入路径的含义