没有名为zlib的模块
首先,请耐心听我说。我很难把我的问题告诉别人,而且这个帖子有点长……
我在Ubuntu 10.10上使用pythonbrew来运行多个版本的Python。关于如何安装pythonbrew和它的工作原理,请参考下面这个链接:
在阅读了几个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。可是,当我尝试import zlib时,还是收到了同样的错误,所以我想我得做点什么,把zlib安装到库里。
但是我不知道该怎么做。有人能指引我一下吗??非常感谢!
我这样做是因为我想在我创建的不同虚拟环境中使用不同版本的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,而且创建我的虚拟环境时,我肯定需要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.
9 个回答
在我遇到的这个情况中,我发现编译后缺少了一些模块。所以我做了以下几步:
- 安装 zlib-devel 这个软件包。
- 重新编译并安装 Python。
默认情况下,当你配置Python源代码时,zlib模块是禁用的。你可以在配置时使用--with-zlib这个选项来启用它。这样就可以了。
./configure --with-zlib
听起来你需要安装zlib的开发包,可能需要做一些类似下面的操作:
# ubuntu 12,14,16,18,20.04+
sudo apt-get install zlib1g-dev
与其使用python-brew,你可能更想手动编译,这其实并不难。只需下载源代码,然后依次运行 configure
、make
和 make 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才能构建 zlib
、sqlite3
等模块。Python的文档对构建过程有更详细的说明:http://docs.python.org/using/unix.html#building-python。