ModuleNotFoundError: No module named ‘lzma‘解决方案

问题描述

在容器中运行一个开源软件,容器内的python是从源码安装的,在python代码中有import lzma,报错:ModuleNotFoundError: No module named ‘lzma’。

笔者先是尝试用pip安装相应的python模块,但是安装之后,还是报错。于是找了网上的方案,有几类,尝试了其中一种。

注意:在解决问题的过程中,发现CentOS 7和CentOS 8 的解决方案可能略有不同,下面的方案是在CentOS 7上测试通过的。

解决方案

如果你的python是从源码安装的,需要在安装python之前,先安装系统依赖。

yum install -y xz-devel mesa-libGL python-backports-lzma

有些答案说只需要安装xz-devel

如果你使用的python版本低于3.3,需要额外安装python依赖。

pip install backports.lzma

再多了解一点

lzma提供了什么功能呢?

LZMA压缩是一种数据压缩算法。它由Igor Pavlov设计,作为7z项目的一部分,于1998年首次使用。“LZMA”代表“Lempel-Ziv-Markov chain-Algorithm”。这种压缩算法具有更高的压缩率。

python是否自带lzma模块呢?

python 3.3开始,lzma就是python自带的模块了。
虽然python 3.3+自带lzma模块,可是如果你是从源码安装的python,而且系统中没有安装lzma-dev包,那么就不会安装lzma模块。

此模块提供用于使用 LZMA 压缩算法压缩和解压缩数据的类和便利函数。还包括一个文件接口,支持 xz 实用程序使用的 .xz 和旧版 .lzma 文件格式,以及原始压缩流。

⚠️注意
此模块提供的接口与 bz2 模块的接口非常相似。请注意,LZMAFilebz2.BZ2File 不是线程安全的,因此,如果您需要从多个线程使用单个 LZMAFile 实例,则必须使用锁对其进行保护。

如何在python中使用lzma呢?

打开一个压缩文件。

import lzma
with lzma.open("file.xz") as f:
    file_content = f.read()

创建一个压缩文件。

import lzma
data = b"Insert Data Here"
with lzma.open("file.xz", "w") as f:
    f.write(data)

低版本python如何操作lzma文件呢?

只需要安装backports.lzma

关于lzma压缩文件的格式和后缀

一个具有.lzma扩展的文件是使用lzma压缩方法创建的存档文件。LZMA是一种旧的文件格式,已经被替换为.xz格式。.lzma文件的MIME类型applicaiotn/x-lzma

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值