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

我取消了最后一行的注释,然后再次运行 巨蟒 -v。但是,我在尝试 导入 zlib时收到了同样的错误,所以我想我必须做一些事情才能将 zlib 安装到 lib 中。

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

我这样做是因为我想在我创建的不同的 Virtual alenv 中使用不同版本的 python。 在执行 Viralenv-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,为了创建我的 viralenv,我肯定需要 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.
170646 次浏览

听起来您需要安装 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

对于我遇到的这个案例,我发现在 make 之后有一些模块丢失了,所以我做了以下的事情:

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

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

在运行 configure 之后,您可以按照下面的方式更改 Module/Setup 文件中的 config 选项:

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

或者您可以取消对 zlib 行的注释。

我的目标是从 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节中的指令,它运行得非常好! 这是一个简单的解决方案。

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

sudo apt-get build-dep python3.6

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

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

我在创建 张量流安装导则张量流安装导则中描述的虚拟环境(venv)时遇到了很多问题。

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

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

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

  1. mkdir myenv

创建一个名为 我的女儿的新目录,但是你可以随意命名它,例如 我的新女友

  1. cd myenv

或者不管你怎么称呼你的目录 so: cd [ your _ directory _ name ]

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

在文件夹 我的女儿中创建名为 来吧的虚拟环境。你可以随心所欲地调用你的虚拟 env,例如 vitualenv [ v _ env _ name ]

  1. source ./venv/bin/activate

激活虚拟环境。请注意,如果您选择不同的 v。命名您的命令应该写成这样的 /[ v _ env _ name ]/bin/active

  1. deactivate

停用虚拟环境。

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

命令的来源

与 CentOS 或 RHEL 运行中的答案类似

sudo yum install zlib-devel

这里显示的—— with-zlib 解决方案似乎缺少 Python 3.9及以上版本需要链接的头部(在我的例子中)。