没有名为zlib的模块

2024-05-16 05:20:24 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,请容忍我。我很难告诉别人我的问题,这是一条很长的线。。。

我正在使用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

我取消了最后一行的注释,然后再次运行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

编辑

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

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

在系统默认的情况下,我需要做的就是

virtualenv --no-site-packages testenv

谢谢!


(第二次编辑)

我也安装了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.

Tags: 模块inbinvirtualenvlibpackagesmodulepythons
3条回答

听起来你需要为zlib安装devel包,可能需要做一些类似sudo apt-get install zlib1g-dev(我不使用ubuntu,所以你需要重新检查这个包)。与其使用python brew,不如考虑手工编译,这并不难。只要下载源代码,configuremakemake install。您至少需要将--prefix设置到某个位置,这样它就会安装在您需要的位置。

./configure --prefix=/opt/python2.7 + other options
make
make install

您可以检查./configure --help中提供了哪些配置选项,并通过执行以下操作查看您的系统python是如何编译的:

python -c "import sysconfig; print sysconfig.get_config_var('CONFIG_ARGS')"

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

默认情况下,当您配置Python源代码时,zlib模块被禁用,因此您可以在配置它时使用选项zlib启用它。所以它变成

./configure --with-zlib

对于我遇到的情况,我发现在制造后有丢失的模块。所以我做了如下工作:

  1. 安装zlib-devel
  2. 重新制作并安装python。

相关问题 更多 >