没有名为zlib的模块

Cpp*_*ner 45 python zlib virtualenv ubuntu-10.10

首先,请耐心等待.我很难告诉别人我的问题,这是一个很长的线索......

我正在使用pythonbrew在Ubuntu 10.10中运行多个版本的python.有关安装pythonbrew及其工作原理,请参阅下面的链接

http://www.howopensource.com/2011/05/how-to-install-and-manage-different-versions-of-python-in-linux/

在阅读了几个stackoverflow线程后,我终于在这个目录下找到了名为Setup的文件: 〜/ .pythonbrew/pythons/Python-2.7.1/lib/python2.7/config

In this Setup file I see 
# Andrew Kuchling's zlib module.
# This require zlib 1.1.3 (or later).
# See http://www.gzip.org/zlib/
# zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
Run Code Online (Sandbox Code Playgroud)

我取消注释最后一行,然后我再次运行python -v.但是,当我尝试导入zlib时,我收到了同样的错误,所以我想我必须做一些事情来将zlib安装到lib中.

但我对自己需要做的事情一无所知.有人可以指导我朝正确的方向??? 非常感谢你!

我这样做是因为我想在我创建的不同virtualenv中使用不同版本的python.当我做virtualenv -p python2.7时,我没有 收到名为zlib的模块.

jwxie518@jwxie518-P5E-VM-DO:~$ virtualenv -p python2.7 --no-site-packages testenv

Running virtualenv with interpreter /home/jwxie518/.pythonbrew/pythons/Python-2.7.1/bin/python2.7

Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 17, in <module>
    import zlib

ImportError: No module named zlib
Run Code Online (Sandbox Code Playgroud)

编辑

我必须通过附加--force来安装2.7.1.

我正在开发Django,我需要一些这些缺少的模块,例如sqlite3,并创建我的virtualenv我绝对需要zlib.如果我只使用系统默认值(2.6.6),我没有问题.

要使用系统默认设置执行此操作,我需要做的就是

virtualenv --no-site-packages testenv
Run Code Online (Sandbox Code Playgroud)

谢谢!


(第2次编辑)

我也安装了3.2,我测试没有问题,所以我想我的问题归结为如何安装丢失的模块.

jwxie518@jwxie518-P5E-VM-DO:~$ virtualenv -p python3.2  testenv
Running virtualenv with interpreter /home/jwxie518/.pythonbrew/pythons/Python-3.2/bin/python3.2
New python executable in testenv/bin/python3.2
Also creating executable in testenv/bin/python
Installing distribute..................................................................................................................................................................................................................................................................................................................................done.
Installing pip...............done.
jwxie518@jwxie518-P5E-VM-DO:~$ virtualenv -p python3.2 --no-site-packages testenv
Running virtualenv with interpreter /home/jwxie518/.pythonbrew/pythons/Python-3.2/bin/python3.2
New python executable in testenv/bin/python3.2
Also creating executable in testenv/bin/python
Installing distribute..................................................................................................................................................................................................................................................................................................................................done.
Installing pip...............done.
Run Code Online (Sandbox Code Playgroud)

zee*_*kay 31

听起来你需要为zlib安装devel包,可能想做类似的事情sudo apt-get install zlib1g-dev(我不使用ubuntu,所以你要仔细检查包).你可能不想使用python-brew而只是考虑手工编译,这不是很难.只要下载源,和configure,make,make install.你至少要设置--prefix到某个地方,所以它会被安装到你想要的地方.

./configure --prefix=/opt/python2.7 + other options
make
make install
Run Code Online (Sandbox Code Playgroud)

您可以检查可用的配置选项,./configure --help并通过执行以下操作来查看编译系统python的内容:

python -c "import sysconfig; print sysconfig.get_config_var('CONFIG_ARGS')"
Run Code Online (Sandbox Code Playgroud)

关键是要确保你已经安装了您的系统的开发包,这样Python就可以建立zlib,sqlite3等模块.python文档更详细地介绍了构建过程:http://docs.python.org/using/unix.html#building-python.

  • 更正:`sudo apt-get build-dep python2.7`和`sudo apt-get build-dep python3.4`. (4认同)
  • 在 centos 7 中使用 $sudo yum install zlib-devel (2认同)

小智 22

默认情况下,在配置Python源时,zlib模块被禁用,因此您可以在配置时使用选项--with-zlib启用它.所以它变成了

./configure --with-zlib
Run Code Online (Sandbox Code Playgroud)

  • 在python`configure`中没有`--with-zlib`这样的东西 (6认同)
  • 这适用于Python 2.6 - 谢谢! (6认同)
  • 公平地说,python`configure`用于提供`--with-zlib`标志; 然而,它还没有相当长的一段时间. (3认同)
  • 在2.7.6中不起作用,我得到配置:警告:无法识别的选项: - with-zlib (2认同)
  • 不使用Python 3.2.5 - >在这里找到有效的答案:http://stackoverflow.com/a/15013895/672848 (2认同)

小智 19

对于我遇到的情况,我发现make之后缺少模块.所以我做了以下事情:

  1. 安装zlib-devel
  2. 再次制作并安装python.

  • 详细说明第一步——`sudo yum install zlib-devel` (centos) (3认同)

小智 9

运行configure后,您可以在文件Modules/Setup中更改config选项,如下所示:

zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
Run Code Online (Sandbox Code Playgroud)

或者您可以按原样取消注释zlib行.