导入错误没有名为 zlib 的模块(已安装 brew python)
Import error no module named zlib (brew installed python)
当我在 python 2.7 的 brew 安装版本上使用 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
这是 xcode 没有正确安装 zlib 的问题。
安装 xcode CLI 使用:
xcode-select --install
然后在使用 brew 重新安装 Python 之前,我检查 zlib header 是否是 brew 通过终端寻找它的地方:
ls /usr/include/zlib.h
然后通过 brew 重新安装 python:
brew reinstall python
对于安装了 Xcode-beta 的 macOs 10.14 mojave 用户,以下应该可以工作,因为 xcode-select --install
似乎没有提供缺少的头文件,至少不在适合安装的位置python 通过 brew...
对我有用的如下:
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 模块。
对于无法使用上述解决方案的人,请使用自制软件的建议。
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"
对我来说,上面的 none 有效,我最终不得不 link zlib.h header 直接进入 /usr/
brew install zlib
ln -s /usr/local/Cellar/zlib/1.2.11/include/zlib.h /usr/local/include/zlib.h
在那之后,当我尝试 pip install Pillow==2.2.2
(我正在处理一个旧项目)...我终于得到了想要的 "ZLIB (PNG/ZIP) support available" 输出
PIL SETUP SUMMARY
--------------------------------------------------------------------
version Pillow 2.2.2
platform darwin 3.5.8 (default, Dec 4 2019, 15:51:38)
[GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.33.12)]
--------------------------------------------------------------------
...
--- ZLIB (PNG/ZIP) support available
(此处为 macOS Catalina 10.5.3)
当我在 python 2.7 的 brew 安装版本上使用 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
这是 xcode 没有正确安装 zlib 的问题。
安装 xcode CLI 使用:
xcode-select --install
然后在使用 brew 重新安装 Python 之前,我检查 zlib header 是否是 brew 通过终端寻找它的地方:
ls /usr/include/zlib.h
然后通过 brew 重新安装 python:
brew reinstall python
对于安装了 Xcode-beta 的 macOs 10.14 mojave 用户,以下应该可以工作,因为 xcode-select --install
似乎没有提供缺少的头文件,至少不在适合安装的位置python 通过 brew...
对我有用的如下:
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 模块。
对于无法使用上述解决方案的人,请使用自制软件的建议。
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"
对我来说,上面的 none 有效,我最终不得不 link zlib.h header 直接进入 /usr/
brew install zlib
ln -s /usr/local/Cellar/zlib/1.2.11/include/zlib.h /usr/local/include/zlib.h
在那之后,当我尝试 pip install Pillow==2.2.2
(我正在处理一个旧项目)...我终于得到了想要的 "ZLIB (PNG/ZIP) support available" 输出
PIL SETUP SUMMARY
--------------------------------------------------------------------
version Pillow 2.2.2
platform darwin 3.5.8 (default, Dec 4 2019, 15:51:38)
[GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.33.12)]
--------------------------------------------------------------------
...
--- ZLIB (PNG/ZIP) support available
(此处为 macOS Catalina 10.5.3)