windows环境安装lzo和python-lzo


近期因python项目开发中涉及到lzo文件解压,需要在windows环境下使用python-lzo压缩工具,但网上相关资料少之又少,遂自行研究相关安装步骤和使用方法。PS:涉及到lzo和python-lzo安装的很多坑。

概述

LZO 是致力于解压速度的一种数据压缩算法,LZO 是 Lempel-Ziv-Oberhumer 的缩写。LZO是一个无损的数据压缩库,相比于压缩比它更加追求速度。最初的库是用 ANSI C 编写、并且遵从 GNU通用公共许可证发布的。
开发人员常用的python环境,是搭建在windows系统上的,而要使用lzo压缩工具,就需要先安装lzo工具,再安装python-lzo插件(用于调用lzo),最后在python项目中import lzo,实现相关压缩解压缩操作。现将操作步骤整理如下,供大家参考。

应用版本

目前,lzo工具的最新版本是2.10,而python-lzo的最新版本是1.12,并且python-lzo对应版本已有一年多时间没有更新。笔者在安装时,由于开始没注意版本问题(均使用最新版本),导致多次编译安装失败,最后才发现是由于版本不支持。
因python-lzo插件长时间未更新,对lzo工具目前只支持到lzo-2.09,所以我们要安装工具的最新版本,也只能使用python-lzo-1.12lzo-2.09
在这里插入图片描述
另外需要说明的是,安装lzo工具时需要使用VisualStudio2010编译器,对C语言程序代码进行编译,因此需要安装好VisualStudio2010编译器。
注意:VisualStudio使用的是2010版编译器。使用2010版的原因是,lzo-2.09版本发布较早,使用2015、2016、2019等进行编译时,因编译器版本问题会导致编译出错,出现如下图的错误:
在这里插入图片描述

Windows环境安装lzo

  1. 下载lzo安装包

    访问地址(http://www.oberhumer.com/opensource/lzo/download/),下载lzo工具的安装包。

  2. 解压缩安装包
    在windows环境下使用解压缩工具,解压下载号的压缩包。
    在这里插入图片描述
    文件夹B:包含了 DOS、windows 等系统的支持文件。
    文件夹examples:包含了示例程序代码。
    文件夹include:包含了公共头文件。
    文件夹minilzo:包含了LZO算法一种简化版。
    文件夹src:包含了LZO源码。
    文件夹util:包含了一些涉及到的脚本。

  3. 编译C程序
    linux环境中lzo编译安装方法,可参考lzo-2.09文件夹中的INSTALL文件;windows环境编译安装方法,可参考lzo-2.09\B\00README.TXT。
    在“开始”菜单中打开Visual Studio x64 Win64命令行工具,执行B\win64文件夹下的bat脚本,具体如下命令:

cd lzo-2.09
.\B\win64\vc.bat

当看到Building LZO was successful. All done.时,说明lzo工具编译安装成功。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 测试是否成功
    在lzo安装的根目录下,执行如下命令:

lzotest.exe -mlzo COPYING

  1. 配置环境变量
    配置Windows系统的环境变量,并将lzo-2.09安装路径添加进Path。
    在这里插入图片描述

安装python-lzo插件

  1. 下载python-lzo安装包

    访问地址(https://pypi.org/project/python-lzo/1.12/#files)下载python-lzo插件安装包。

  2. 解压缩安装包
    在windows环境下使用解压缩工具,解压下载好的压缩包。
    在这里插入图片描述

  3. 安装python包
    在python-lzo的解压缩目录下,打开CMD命令行窗口,然后执行命令:python setup.py install。安装完成后,会在python安装目录\Lib\site-packages下,形成编译好的lzo.cp37-win_amd64.pyd文件(类似于dll文件)。
    在这里插入图片描述

  4. 导包测试
    使用Python工具IDLE进行导包测试,如果import lzo没有报错,说明已成功编译安装。
    在这里插入图片描述

快速安装

为了方便安装使用lzo工具,已将编译好的文件上传百度网盘,可直接下载使用。
lzo工具-https://pan.baidu.com/s/1jOOekUO00el_30e1ClBOkw,提取码:lnfs。解压缩后配置到系统环境变量中。
python-lzo插件-https://pan.baidu.com/s/136VQqA3AH4K6AozViAjNMA ,提取码:6ujo 。拷贝到python安装目录\Lib\site-packages下即可。

代码示例

python-lzo的具体使用方法,可参考文件python-lzo-1.12\tests\test.py中的内容。

import lzo

a0 = lzo.adler32(src)
c =  lzo.compress(src, level)#压缩
u1 = lzo.decompress(c)#解压缩
a1 = lzo.adler32(u1)
o =  lzo.optimize(c)
u2 = lzo.decompress(o)
a2 = lzo.adler32(u2)

问题解析

  1. 找不到LZO_DIR
Traceback (most recent call last):
  File "setup.py", line 46, in <module>
    raise Exception("please set LZO_DIR to where the lzo source lives")
Exception: please set LZO_DIR to where the lzo source lives

报错原因:在执行python setup.py install命令时,python-lzo-1.12会去扫描系统的环境变量,查找LZO_DIR中配置的lzo工具安装路径,如果没有配置环境变量或环境变量不一致,会报上述错误。
另外,python-lzo-1.11之前的版本,LZO_DIR路径是写死在setup.py文件中的,需要手动进行修改。如下图所示:
在这里插入图片描述

  1. 找不到lzo.lib
LINK : fatal error LNK1181: 无法打开输入文件“c:\lzo\lzo-2.09\lzo.lib”
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Communit
y\\VC\\Tools\\MSVC\\14.24.28314\\bin\\HostX86\\x64\\link.exe' failed with exit status 1181

报错原因:在安装lzo模块时,选择的C程序编译器版本与lzo工具版本不匹配,导致编译结果中缺失了lzo.lib文件。

  1. 找不到lzo1x.h
lzomodule.c(35): fatal error C1083: 无法打开包括文件: “lzo/lzo1x.h”: No such f
ile or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Communit
y\\VC\\Tools\\MSVC\\14.24.28314\\bin\\HostX86\\x64\\cl.exe' failed with exit sta
tus 2

报错原因:lzo1x.h位于lzo工具安装目录include\lzo\下,python-lzo\lzomodule.c中可能存在应用错误,需要手动进行修改。如果不清楚相对路径,可将其改为绝对路径。
在这里插入图片描述

  1. 导包时找不到模块
>>> import lzo
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import lzo
ModuleNotFoundError: No module named 'lzo'

报错原因:在执行python setup.py install命令时,相关C程序编译失败,导致未能生成python\Lib\site-packages\lzo.cp37-win_amd64.pyd文件。请检查安装版本是否匹配,进行编译时是否成功。

#参考资料
[1]LZO基本介绍与调试总结 https://blog.csdn.net/parasoft/article/details/84971788
[2]Windws安装python-lzo
https://kokufu.blogspot.com/2019/06/windows-python-lzo.html

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页