Mac用Homebrew+pyenv安装Python2.7.7时zlib缺失报错求助
在MacOS Monterey 12.5上用pyenv安装Python 2.7.7的zlib缺失问题解决办法
问题背景
- 设备:MacBook Air(1.6GHz双核Intel Core i5)
- 系统:OSX 12.5 Monterrey
- 核心问题:使用Homebrew搭配pyenv安装Python 2.7.7时,持续出现「Missing zlib」编译错误
已尝试的操作
- 安装pyenv后,通过
nano ~/.bashrc在配置文件中添加eval "$(pyenv init -)"并保存 - 执行
pyenv install 2.7.7,安装失败 - 尝试指定zlib路径安装:
CPPFLAGS="-I$(brew --prefix zlib)/include" pyenv install -v 2.7.7,仍报错 - 重新安装zlib:
brew reinstall zlib,并更新~/.bashrc内容为:
export PATH="/usr/local/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" export LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/bzip2/lib" export CPPFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/bzip2/include"
报错信息
rm -f /Users/victor/.pyenv/versions/2.7.7/bin/python2 (cd /Users/victor/.pyenv/versions/2.7.7/bin; ln -s python2.7 python2) rm -f /Users/victor/.pyenv/versions/2.7.7/bin/python2-config (cd /Users/victor/.pyenv/versions/2.7.7/bin; ln -s python2.7-config python2-config) rm -f /Users/victor/.pyenv/versions/2.7.7/bin/python-config (cd /Users/victor/.pyenv/versions/2.7.7/bin; ln -s python2-config python-config) test -d /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig || /usr/bin/install -c -d -m 755 /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig rm -f /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig/python2.pc (cd /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig; ln -s python-2.7.pc python2.pc) rm -f /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig/python.pc (cd /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig; ln -s python2.pc python.pc) rm -f /Users/victor/.pyenv/versions/2.7.7/share/man/man1/python2.1 (cd /Users/victor/.pyenv/versions/2.7.7/share/man/man1; ln -s python2.7.1 python2.1) rm -f /Users/victor/.pyenv/versions/2.7.7/share/man/man1/python.1 (cd /Users/victor/.pyenv/versions/2.7.7/share/man/man1; ln -s python2.1 python.1) 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 12.5 using python-build 20180424) Inspect or clean up the working tree at /var/folders/__/1_b0871s7fl7fpwydg4ycjj80000gn/T/python-build.20220729111901.75727 Results logged to /var/folders/__/1_b0871s7fl7fpwydg4ycjj80000gn/T/python-build.20220729111901.75727.log Last 10 log lines: (cd /Users/victor/.pyenv/versions/2.7.7/bin; ln -s python2-config python-config) test -d /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig || /usr/bin/install -c -d -m 755 /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig rm -f /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig/python2.pc (cd /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig; ln -s python-2.7.pc python2.pc) rm -f /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig/python.pc (cd /Users/victor/.pyenv/versions/2.7.7/lib/pkgconfig; ln -s python2.pc python.pc) rm -f /Users/victor/.pyenv/versions/2.7.7/share/man/man1/python2.1 (cd /Users/victor/.pyenv/versions/2.7.7/share/man/man1; ln -s python2.7.1 python2.1) rm -f /Users/victor/.pyenv/versions/2.7.7/share/man/man1/python.1 (cd /Users/victor/.pyenv/versions/2.7.7/share/man/man1; ln -s python2.1 python.1) Victors-MacBook-Air:~ victor$ xcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates Victors-MacBook-Air:~ victor$ Victors-MacBook-Air:~ victor$ xcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates Victors-MacBook-Air:~ victor$ Victors-MacBook-Air:~ victor$ xcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates Victors-MacBook-Air:~ victor$ Victors-MacBook-Air:~ victor$ software update -bash: software: command not found
解决步骤
1. 确保环境变量生效
修改~/.bashrc后,必须重新加载配置,否则新设置的变量不会生效:
source ~/.bashrc
或者直接重启终端。
2. 添加SDKROOT环境变量
Monterey系统下编译老版本Python需要指定系统SDK路径,在~/.bashrc中追加:
export SDKROOT=$(xcrun --show-sdk-path)
保存后执行source ~/.bashrc加载配置。
3. 清理旧编译缓存
删除之前失败的编译临时文件和已下载的Python源码,避免残留问题:
# 删除指定临时编译目录(替换为你报错里的路径) rm -rf /var/folders/__/1_b0871s7fl7fpwydg4ycjj80000gn/T/python-build.20220729111901.75727 # 删除pyenv缓存的Python安装包 rm -rf ~/.pyenv/cache/python-2.7.7.tar.xz # 强制卸载已部分安装的版本 pyenv uninstall --force 2.7.7
4. 重新执行安装
加载配置后,直接执行安装命令:
pyenv install 2.7.7
如果仍报错,尝试一次性传入所有必要环境变量:
SDKROOT=$(xcrun --show-sdk-path) LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/bzip2/lib" CPPFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/bzip2/include" pyenv install -v 2.7.7
5. 重置Xcode命令行工具路径
虽然已安装命令行工具,但重置路径可解决潜在的路径冲突:
sudo xcode-select --reset
执行后检查路径是否正确:
xcode-select --print-path
正常输出应为/Library/Developer/CommandLineTools。
内容的提问来源于stack exchange,提问作者Victor Cardozo
相关产品推荐
相关产品推荐

