没有名为zlib的模块

首先,请忍受我。 我很难告诉别人我的问题,这是一个漫长的线程…

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

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

在阅读了几个stackoverflow线程之后,我终于在这个目录下find了一个名为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中。

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

我这样做是因为我想在我创build的不同版本的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,我需要一些这些缺less的模块,例如sqlite3,并创build我的virtualenv我绝对需要zlib。 如果我只是使用系统默认(2.6.6),我没有问题。

要做到这一点与系统默认,我所需要做的是

 virtualenv --no-site-packages testenv 

谢谢!


(第二编辑)

我也安装了3.2,我testing没有问题,所以我想我的问题归结为如何安装缺less的模块(S)。

 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. 

听起来你需要为zlib安装devel软件包,可能想做一些类似于sudo apt-get install zlib1g-dev (我不使用Ubuntu,所以你需要仔细检查软件包)。 而不是使用python-brew,你可能想考虑手动编译,这不是很难。 只需下载源代码,然后configuremakemake install 。 你至less要设置--prefix到某个地方,所以它会被安装到你想要的地方。

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

您可以查看./configure --help提供哪些configuration选项,并通过执行以查看您的系统python编译的内容:

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

关键是要确保你的系统已经安装了开发包,以便Python能够构buildzlibsqlite3等模块。 python文档详细介绍了构build过程: http : //docs.python.org/using/unix.html#building-python 。

默认情况下,在configurationPython源代码时,zlib模块是禁用的,所以您可以在configuration它时使用选项–with-zlib来启用它。 所以它成为

 ./configure --with-zlib 

对于我遇到的情况,我发现制作完成后还有一些缺失的模块。 所以我做了以下几点:

  1. 安装zlib-devel
  2. 再次安装python。

运行configure之后,你可以改变文件Modules / Setup中的config选项,如下所示:

 zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz 

或者你可以取消注释zlib线。

安装缺less的zlib dev软件包之后,你也可以使用pythonbrew来卸载,然后重新安装你想要的python版本,好像它拿起新的软件包来编译来纠正能力。 这样,你可以继续使用pythonbrew,而不必自己编译(尽pipe这并不困难)

我的目标是从Ubuntu的命令行创build一个新的Django项目,如下所示:

 django-admin.py startproject mysite 

我已经安装了python2.7.5。 我得到这个错误:

 ImportError: No module named zlib 

几个小时,我找不到解决scheme,直到现在!

这里是解决scheme的链接 –

http://doc.biblissima-condorcet.fr/loris-setup-guide-ubuntu-debian

我遵循并执行了第1.1节中的指令,并且工作正常! 这是一个简单的解决scheme。

我发现的最简单的解决scheme是在python.org devguide上给出的 :

 sudo apt-get build-dep python3.6 

如果该软件包不适用于您的系统,请尝试减小次要版本,直至find系统软件包pipe理器中可用的软件包。

我试着在我的博客上解释细节。