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

文章目录

  • 问题描述
  • 解决方案
  • 再多了解一点
    • lzma提供了什么功能呢?
    • python是否自带lzma模块呢?
    • 如何在python中使用lzma呢?
    • 低版本python如何操作lzma文件呢?
    • 关于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

你可能感兴趣的:(Python,python)