Ubuntu python3.7 导包报错:No module named ‘_lzma’

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starry-sky(jing)

一起共勉,一起加油!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值