Virtualenv没有名为zlib的模块

Paw*_*ech 13 python zlib virtualenv

我正在尝试在Python2.6下创建Python 2.7虚拟环境,我只是运行:

virtualenv --python=python27 #python27 correctly leads to my python installation in /opt/python2.7/bin/python
Run Code Online (Sandbox Code Playgroud)

Virtualenv失败并出现以下错误

Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/virtualenv.py", line 17, in <module>
import zlib
ImportError: No module named zlib
Run Code Online (Sandbox Code Playgroud)

这让我很困惑,因为:

1)我显然有python zlib模块.当我在python 2.6的交互式环境中运行"import zlib"时,我可以轻松导入它.

2)我的系统中安装了zlib(centos):

[me@mycomp]# rpm -qa | grep zlib
zlib-1.2.3-29.el6.x86_64
zlib-1.2.3-29.el6.i686
zlib-devel-1.2.3-29.el6.x86_64
Run Code Online (Sandbox Code Playgroud)

关于这个问题还有另外两个问题,在这里这里,在这两种情况下,人们根本没有安装zlib,这不是我的情况(我在python 2.6中有它,这应该没问题?),他们也使用pythonbrew这显然不再处于积极发展阶段.

为什么virtualenv找不到zlib?virtualenv如何查找其模块?我需要在Python2.7中安装zlib吗?或者重新安装Python2.7以便支持zlib?

旁注:请不要问我为什么使用旧版本,这不是我的选择.

l0b*_*0b0 13

您的Python必须在没有Python支持的情况下编译,很可能是因为zlib-devel在编译时没有安装.查看输出make或者make install你应该看到类似下面的东西(取自Python 2.7.6的构建):

Python build finished, but the necessary bits to build these modules were not found:
[...]        zlib            
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
Run Code Online (Sandbox Code Playgroud)

要解决您的问题,您需要安装zlib-devel(如果未安装)并重新编译或重新安装Python.


And*_*ter 5

zlib是一个Python模块,它与您计算机上的zlib库连接.它是标准库的一部分,因此它应该在所有Python 2.7安装上.

如果不是,在您的情况下,则可能意味着您的Python版本在没有zlib支持的情况下编译出于某种原因.我无法想象为什么,除非它与您为启用旧版zlib所做的事情有关.我想你需要找到另一个Python包,或者自己编译Python.