1. 报错日志:No module named ‘_lzma’
源码安装的python,而且系统中没有安装lzma-dev包。
(1))、安装
sudo apt-get install liblzma-dev
pip3 install backports.lzma
(2)、修改lzma.py文件,该文件在python安装目录下,比如我在/usr/local/lib/python3.7下
from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties
#修改为
try:
from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties
except ImportError:
from backports.lzma import *
from backports.lzma import _encode_filter_properties, _decode_filter_properties
再次导包没有出现报错了!!
2. 报错日志:ModuleNotFoundError: No module named ‘_bz2‘问题解决
第一种方式
(1) 可以复制本机其他python版本的so文件
找到python3.8路径下的bz库文件,即“_bz2.cpython-38m-x86_64-linux-gnu.so”。
find / -name lib-dynload
ls /usr/lib/python3.8/lib-dynload/
(2)、cd到python3.7对应路径,复制该文件到当前目录下:
cd /usr/local/lib/python3.7/lib-dynload
sudo cp /usr/lib/python3.8/lib-dynload/_bz2.cpython-38m-x86_64-linux-gnu.so ./
(3)、修改文件名:“-38m"改为”-37m"
sudo mv _bz2.cpython-38m-x86_64-linux-gnu.so _bz2.cpython-37m-x86_64-linux-gnu.so
重新运行, 出现ImportError:_bz2.cpython-37m-x86_64-linux-gnu.so:invalid ELF header报错,原因应该是向下兼容的问题,我们就换为3.6,看第二种方式。
第二种方式
(1) 下载so文件:_bz2.cpython-37m-x86_64-linux-gnu.so
(2) 放在
sudo cp _bz2.cpython-37m-x86_64-linux-gnu.so /usr/local/lib/python3.7/lib-dynload
重新再导入就ok