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

  • Post author:
  • Post category:其他




问题描述

在容器中运行一个开源软件,容器内的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 模块的接口非常相似。请注意,

LZMAFile



bz2.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



版权声明:本文为m0_48742971原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。