TL; DR
执行 brew install zlib
安装 zlib
之后,根据安装信息提示将一下三行变量
export LDFLAGS="-L/opt/homebrew/opt/zlib/lib"
export CPPFLAGS="-I/opt/homebrew/opt/zlib/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/zlib/lib/pkgconfig"
加入到 ~/.zshrc
中,如果 shell
是 bash
则加入 ~/.bashrc
中,以此类推,不确定当前默认的 shell
是哪一个,则执行 echo $0
查看输出结果。
source ~/.zshrc
或重新启动终端以后,再次执行安装指令即可。
分析
报错信息如下:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named zlib
ERROR: The Python zlib extension was not compiled. Missing the zlib?
Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems
BUILD FAILED (OS X 14.3.1 using python-build 20180424)
Inspect or clean up the working tree at /var/folders/rl/lhvcg2c15_g8ns9nsc6kx85c0000gn/T/python-build.20240312102055.43861
Results logged to /var/folders/rl/lhvcg2c15_g8ns9nsc6kx85c0000gn/T/python-build.20240312102055.43861.log
Last 10 log lines:
rm -f /Users/xxx/.pyenv/versions/2.7.18/share/man/man1/python.1
(cd /Users/xxx/.pyenv/versions/2.7.18/share/man/man1; ln -s python2.1 python.1)
if test "xno" != "xno" ; then \
case no in \
upgrade) ensurepip="--upgrade" ;; \
install|*) ensurepip="" ;; \
esac; \
DYLD_LIBRARY_PATH=/var/folders/rl/lhvcg2c15_g8ns9nsc6kx85c0000gn/T/python-build.20240312102055.43861/Python-2.7.18 ./python.exe -E -m ensurepip \
$ensurepip --root=/ ; \
fi
根据 wiki提供的解决 zlib
包导致安装异常信息,主要诱因是编译目标 python
版本时,引用 zlib
的库函数异常了。同时官方也给出一个解决方案:
CPPFLAGS="-I$(brew --prefix zlib)/include" pyenv install -v 3.7.0
执行这一个命令后,我还是得到了同样的报错信息。于是回到这个命令本身,执行命令前覆写的环境变量 CPPFLAGS="-I$(brew --prefix zlib)/include"
,了解 CPP 的开发者应该知道,这里是提供了后续编译使用到的头文件的库目录,于是根据 wiki 上下文,主要是缺失 OpenSSL 段落中的信息,我看到了 CPPFLAGS
和 LDFLAGS
。
再跑去 Google 了一圈,确实如这篇回答所说,现在装完 zlib
后会提示有三个变量可以进行选择性配置,装好需要配置一下路径,之后便能正常安装。
export LDFLAGS="-L/usr/local/opt/zlib/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include"
export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig"
标签:opt,CPPFLAGS,macOS,python,zlib,pyenv,报错,export
From: https://www.cnblogs.com/z1645444/p/18068349