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

Yun*_*nti 7 python linux homebrew pip

当我在brew安装版本的python 2.7上使用pip冻结时,我得到一个导入错误没有名为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
Run Code Online (Sandbox Code Playgroud)

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

?  ~  which pip
/usr/local/bin/pip
?  ~  which python
/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)

小智 7

对于安装了Xcode-beta的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...
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我还必须重新安装以前通过pip安装的一些python模块.


Yun*_*nti 4

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

使用以下命令安装 xcode CLI:

xcode-select --install
Run Code Online (Sandbox Code Playgroud)

然后在用brew重新安装Python之前,我检查zlib头是否是brew通过终端寻找它的地方:

ls /usr/include/zlib.h 
Run Code Online (Sandbox Code Playgroud)

然后通过brew重新安装python:

brew reinstall python
Run Code Online (Sandbox Code Playgroud)