Python升级导致 no module named xxx

背景说明

由于omv5是基于debian10,其自带python版本位3.7.3

在调用pip3 时发生了insecurewarning,详情见此前的文章,链接如下

问题描述

当使用apt-get install xxx包 或者 apt-get update 时,会报错如下

Traceback (most recent call last):
   File "/usr/sbin/omv-mkaptidx", line 38, in <module>
     import apt
 ModuleNotFoundError: No module named 'apt'

解决过程

查看了python3.8下面,的确是没有apt 的模块,尝试安装了apt_wrapper没有解决,但是在/usr/lib/python3/dist-package 下是有apt 的模块的

采用了一种最傻的办法,把 /usr/lib/python3/dist-packages 中的文件全部复制到新/usr/local/lib/python3.8/ ,执行以下命令

cp -r /usr/lib/python3/dist-packages/ /usr/local/lib/python3.8

重新执行 apt-get update

此时apt 已经能找到了,但是找不到apt_pkg

也不能重新安装python3-pip 或者 python3-apt, 报错代码如下:

Traceback (most recent call last):
   File "/usr/sbin/omv-mkaptidx", line 38, in <module>
     import apt
   File "/usr/local/lib/python3.8/apt/__init__.py", line 23, in <module>
     import apt_pkg
 ModuleNotFoundError: No module named 'apt_pkg'

同样,可以把apt_pkg的文件从 /usr/lib/python3/dist-packages 拷贝到/usr/local/lib/python3.8/ ,并且相应改名,命令如下。由于并不太了解这两个文件在3.8的版本下应该怎么命令,我做了两个副本,一个叫38m,一个叫38

cp /usr/lib/python3/dist-packages/apt_pkg.cpython-37m-x86_64-linux-gnu.so /usr/local/lib/python3.8/apt_pkg.cpython-38m-x86_64-linux-gnu.so
cp /usr/lib/python3/dist-packages/apt_pkg.cpython-37m-x86_64-linux-gnu.so /usr/local/lib/python3.8/apt_pkg.cpython-38-x86_64-linux-gnu.so

重新执行apt-get update ,顺利解决。

发表回复