没有名为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

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中。

但我不知道我需要做什么。有人能告诉我正确的方向吗???非常感谢!

我这么做是因为我想在我创建的不同虚拟机中使用不同版本的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.

听起来你需要为zlib安装devel包,可能想做一些类似的事情

# ubuntu 12,14,16,18,20.04+
sudo apt-get install zlib1g-dev

您可能想考虑手动编译,而不是使用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

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

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

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

我在制作tensorflow安装指南中描述的虚拟环境(venv)时遇到了很多问题。

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

  1. pip3 install --user pipenv
  2. pip install virtualenv

安装依赖项以创建虚拟环境

  1. mkdir myenv

创建一个名为myenv的新目录,但您可以随意调用它,例如mynewenv

  1. cd myenv

或者不管你怎么称呼你的目录,所以:cd[your_directory_name]

  1. virtualenv -p /usr/bin/python3 venv

在文件夹myenv中创建名为venv的虚拟环境。你可以随意调用你的虚拟环境,例如vitualenv[v_env_name]

  1. source ./venv/bin/activate

激活虚拟环境。请注意,如果您选择不同的v.env。name您的命令应该写成这样的源代码/[v_env_name]/bin/activate

  1. deactivate

停用虚拟环境。

注意:我使用的是Python 3.6.6&Ubuntu 18.04

命令的源代码

在安装了丢失的zlib dev包后,您还可以使用pythonbrew卸载然后重新安装您想要的python版本,它似乎会选择新的包进行编译以获得正确的功能。通过这种方式,您可以继续使用pythonbrew,而不必自己进行编译(尽管没有那么困难)

类似于在CentOS或RHEL上运行的答案

sudo yum install zlib-devel

这里显示的--withzlib解决方案似乎缺少Python 3.9及更高版本需要链接的头(在我的例子中)。

我发现的最简单的解决方案在python.org devguide:

sudo apt-get build-dep python3.6

如果该软件包不适用于您的系统,请尝试减少次要版本,直到您在系统的软件包管理器中找到可用的软件包。

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

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

django-admin.py startproject mysite

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

ImportError: No module named zlib

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

这里有一个解决方案的链接-

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

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

最新更新