缺少zlib模块 - Python 2.4.3
我正在尝试在这个 Python 2.4.3 上安装 simplejson - 我无法升级,我知道这个版本很旧,但我无能为力,这不是我的错,请帮帮我。不过,当我运行 ..\python.exe .\setup.py install 时,我遇到了以下问题:
File "C:\Program Files (x86)\WorldViz\Vizard30\bin\lib\zipfile.py", line 188, in __init__ raise RuntimeError,\
RuntimeError: Compression requires the (missing) zlib module
有没有人知道我该如何在这台 Windows 64 位机器上安装 zlib?或者我可以在哪里找到 simplejson 的编译版本,或者有没有兼容的替代品可以用?
再次强调,我无法对 Python 2.4.3 做任何事情 - 这是一个我无法更改的专有修改版本。
2 个回答
把 .py 文件复制到 site-packages 目录下可以让一些功能正常工作,特别是你可以从未压缩的 zip 文件中读取文件,但你无法解压缩压缩文件。你遇到的问题是 ./config 找不到 zlib.so(或者可能是 zlib.h),所以跳过了创建这个文件。这个问题出现在较旧版本的 Python(2.6 之前)在最近的 Ubuntu 系统上(特别是 11.0 版本)编译时,因为 Canonical 重新整理了 /lib 目录的内容,以更好地支持多种架构。所以 config 正在寻找 /lib/libz.so 文件,而它实际上在 /usr/lib/i386-linux-gnu/libz.so(或者根据你的机器在其他 /usr/lib/$ARCH/ 目录下)。
理论上可以通过导出 shell 变量来告诉 config 额外的搜索目录,但我没能成功。能用的办法是一个比较麻烦的黑科技。
ln -s /usr/lib/i386-linux-gnu/libz.so /lib/libz.so
标准库中还有其他部分被 config 视为可选的,也受到了这个问题的影响,但我没时间去找它们。你在执行 "make" 后,记得再执行 "make test",最后会列出在 Linux 上预期找到但没有找到的包。
zlib
模块是Python标准库的一部分,我在Python包索引上没有看到可以单独安装的版本。其实它对Python来说非常重要,因为如果标准库以ZIP文件的形式分发,Python就无法运行自己的标准库,所以如果没有这个模块,那这个Python肯定是经过特别定制的。你能不能在另一个目录下从源代码构建一个正常的Python,并且确保有zlib
的库文件,然后把zlib.so
文件复制过去,看看能不能和你现在用的这个奇怪的Python链接上?
补充:想想看,你为什么需要一个编译过的simplejson版本?普通的Python版本不够用吗?
补充:这是我如何安装simplejson
而不需要编译它的加速例程的方法:
$ wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.1.1.tar.gz
$ tar xvfz simplejson-2.1.1.tar.gz
$ cd simplejson-2.1.1
$ cp -r simplejson /usr/lib/python2.4/site-packages
前面这三步可以在其他系统上完成,当然你也可以直接用浏览器,而不是用wget
。关键是你可以把.tar.gz
里面的整个simplejson
目录复制到你的site-packages
里,这样就应该能用。虽然这种手动安装的方法有点麻烦,但它肯定不需要其他依赖!:-)