关于python:没有名为zlib的模块

no module named 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线程之后,我终于在以下目录下找到了名为Setup的文件:?/ .pythonbrew / pythons / Python-2.7.1 / lib / python2.7 / config

1
2
3
4
5
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的模块。

1
2
3
4
5
6
7
8
9
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),则没有问题。

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

1
virtualenv --no-site-packages testenv

谢谢!

(第二次编辑)

我也安装了3.2,并且没有问题地进行了测试,所以我想我的问题归结于如何安装缺少的模块。

1
2
3
4
5
6
7
8
9
10
11
12
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。您至少需要将--prefix设置为某个位置,以便将其安装在所需的位置。

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

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

1
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模块是禁用的,因此在配置它时,可以使用选项--with-zlib启用它。所以变成

1
./configure --with-zlib


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

  • 安装zlib-devel
  • 再次制作并安装python。

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

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

    或者,您可以按原样取消对zlib行的注释。


    安装缺少的zlib dev软件包后,您还可以使用pythonbrew卸载,然后重新安装所需的python版本,似乎它会拾取新软件包以进行编译以更正功能。这样,您可以继续使用pythonbrew,而不必自己进行编译(尽管并不困难)


    我在创建虚拟环境(venv)时遇到很多问题,如tensorflow安装指南中所述。

    这篇文章中列出的大多数命令也没有帮助我,如果这也是您的情况,这就是我所做的:

  • pip3 install --user pipenv
  • pip install virtualenv
  • 安装依赖项以创建虚拟环境

  • mkdir myenv
  • 创建一个名为myenv的新目录,但是您可以根据需要调用它,例如mynewenv

  • cd myenv
  • 或您这样称呼目录的名称:cd [your_directory_name]

  • virtualenv -p /usr/bin/python3 venv
  • 在文件夹myenv中创建一个名为venv的虚拟环境。您可以随便呼叫虚拟环境,例如vitualenv [v_env_name]

  • source ./venv/bin/activate
  • 激活虚拟环境。请注意,如果您选择其他v。env。名称,您的命令应该写成这样的源./[v_env_name]/bin/activate

  • deactivate
  • 停用虚拟环境。

    注意:我正在使用Python 3.6.6和Ubuntu 18.04

    命令的来源


    我找到的最简单的解决方案在python.org devguide上给出:

    1
    sudo apt-get build-dep python3.6

    如果该软件包对您的系统不可用,请尝试降低次要版本,直到在系统的软件包管理器中找到可用的软件包为止。

    我试图在博客上解释细节。


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

    1
    django-admin.py startproject mysite

    我安装了python2.7.5。我收到此错误:

    1
    ImportError: No module named zlib

    直到现在,我几个小时都找不到解决方案!

    这是解决方案的链接-

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

    我遵循并执行了1.1节中的指令,它运行良好!这是一个简单的解决方案。