导入错误没有名为zlib的模块(brew安装了python)

时间:2015-09-17 12:24:00

标签: python linux pip homebrew

当我在brew安装版本的python 2.7上使用pip freeze时,我得到一个导入错误,没有名为zlib的模块。

➜  ~  pip freeze
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 9, in <module>
    load_entry_point('pip==7.1.2', 'console_scripts', 'pip')()
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 558, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2682, in load_entry_point
    return ep.load()
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2355, in load
    return self.resolve()
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2361, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/local/lib/python2.7/site-packages/pip/__init__.py", line 15, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/local/lib/python2.7/site-packages/pip/vcs/mercurial.py", line 10, in <module>
    from pip.download import path_to_url
  File "/usr/local/lib/python2.7/site-packages/pip/download.py", line 38, in <module>
    from pip._vendor import requests, six
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/requests/__init__.py", line 58, in <module>
    from . import utils
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/requests/utils.py", line 26, in <module>
    from .compat import parse_http_list as _parse_list_header
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/requests/compat.py", line 7, in <module>
    from .packages import chardet
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/__init__.py", line 3, in <module>
    from . import urllib3
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py", line 10, in <module>
    from .connectionpool import (
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/connectionpool.py", line 38, in <module>
    from .response import HTTPResponse
  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py", line 5, in <module>
    import zlib
ImportError: No module named lib

我认为这通常是用python安装的,但是我已经用brew安装了python(2.7)并卸载并重新安装brew并没有解决问题吗?

➜  ~  which pip
/usr/local/bin/pip
➜  ~  which python
/usr/local/bin/python

4 个答案:

答案 0 :(得分:7)

对于安装了Xcode-beta的macOs 10.14 mojave用户,以下各项应能正常工作,因为xcode-select --install似乎没有提供缺少的头文件,至少在不能通过brew安装python的位置...

对我有用的是:

brew install zlib
brew link zlib --force

#python 3
brew (re)install python3
brew postinstall python3
brew link python3 #just in case...

#python 2
brew (re)install python2
brew link python2 #just in case...

就我而言,我还必须重新安装以前通过pip安装的一些python模块。

答案 1 :(得分:4)

这是xcode无法正确安装zlib的问题。

使用以下命令安装xcode CLI:

xcode-select --install

然后在使用brew重新安装Python之前,我检查zlib标头是否是brew通过终端查找的位置:

ls /usr/include/zlib.h 

然后通过brew重新安装python:

brew reinstall python

答案 2 :(得分:0)

对于那些无法使用上述解决方案的人,请使用自制软件的建议。

export LDFLAGS="-L/usr/local/opt/zlib/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include"

以下内容对我无济于事:

xcode-select --install

brew link zlib --force

相反,它给了我一条错误消息:

Warning: Refusing to link macOS-provided software: zlib
For compilers to find zlib you may need to set:
  export LDFLAGS="-L/usr/local/opt/zlib/lib"
  export CPPFLAGS="-I/usr/local/opt/zlib/include"

For pkg-config to find zlib you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig"

答案 3 :(得分:0)

对我来说,以上方法均无效,我不得不将zlib.h标头直接链接到/ usr /

{
  "data": {
    "idcNumber": 1234567890123,
    "cesco": "Sagrado Corazón",
    "digitalExpirationDate": "2020-04-07 09:27:45",
    "licenseRenewalDate": "2020-04-07 09:27:45",
    "reportCreationDate": "2020-04-07 09:27:45",
    "firstName": "Hermelegildo M.",
    "lastName": "Maldonado Rodríguez",
    "realId": false,
    "requiredDocuments": [
      {
        "documentNumber": 1,
        "title": "Este Documento Impreso o Digital",
        "instruction": "Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. No sólo sobrevivió 500 años, sino que tambien ingresó como texto de relleno en documentos electrónicos, quedando esencialmente igual al original. Fue popularizado en los 60s con la creación de las hojas \"Letraset\", las cuales contenian pasajes de Lorem Ipsum, y más recientemente con software de autoedición, como por ejemplo Aldus PageMaker, el cual incluye versiones de Lorem Ipsum."
      },
      {
        "documentNumber": 2,
        "title": "Licencia Actual",
        "instruction": "Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. No sólo sobrevivió 500 años, sino que tambien ingresó como texto de relleno en documentos electrónicos, quedando esencialmente igual al original. Fue popularizado en los 60s con la creación de las hojas \"Letraset\", las cuales contenian pasajes de Lorem Ipsum, y más recientemente con software de autoedición, como por ejemplo Aldus PageMaker, el cual incluye versiones de Lorem Ipsum."
      },{
        "documentNumber": 3,
        "title": "Seguro Social / Pasaporte",
        "instruction": "Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. No sólo sobrevivió 500 años, sino que tambien ingresó como texto de relleno en documentos electrónicos, quedando esencialmente igual al original. Fue popularizado en los 60s con la creación de las hojas \"Letraset\", las cuales contenian pasajes de Lorem Ipsum, y más recientemente con software de autoedición, como por ejemplo Aldus PageMaker, el cual incluye versiones de Lorem Ipsum."
      },{
        "documentNumber": 4,
        "title": "Recibo Agua, Luz, etc.",
        "instruction": "Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. No sólo sobrevivió 500 años, sino que tambien ingresó como texto de relleno en documentos electrónicos, quedando esencialmente igual al original. Fue popularizado en los 60s con la creación de las hojas \"Letraset\", las cuales contenian pasajes de Lorem Ipsum, y más recientemente con software de autoedición, como por ejemplo Aldus PageMaker, el cual incluye versiones de Lorem Ipsum."
      },{
        "documentNumber": 5,
        "title": "Foto y Firma Digitalizada",
        "instruction": "Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. No sólo sobrevivió 500 años, sino que tambien ingresó como texto de relleno en documentos electrónicos, quedando esencialmente igual al original. Fue popularizado en los 60s con la creación de las hojas \"Letraset\", las cuales contenian pasajes de Lorem Ipsum, y más recientemente con software de autoedición, como por ejemplo Aldus PageMaker, el cual incluye versiones de Lorem Ipsum."
      }

    ],
    "finesCount": 25,
    "finesTotal": 12000.00,
    "lateFees": 60.00,
    "finesDiscount": 60.00,
    "transactionReceipt": 120459593030,
    "charges": [
      {
        "chargeName": "Renovación Digital",
        "chargeAmount": 11.00
      },
      {
        "chargeName": "Renovación",
        "chargeAmount": 11.00
      }
    ]
  }
}

此后,当我尝试brew install zlib ln -s /usr/local/Cellar/zlib/1.2.11/include/zlib.h /usr/local/include/zlib.h (即在一个旧项目中工作)时……我终于得到了所需的“可用的ZLIB(PNG / ZIP)支持”输出

pip install Pillow==2.2.2

(此处为macOS Catalina 10.5.3)