Mac OS X 13.4下使用pyenv无法编译任何Python版本求助
macOS 13.4升级后pyenv编译Python失败的问题
我最近升级到macOS 13.4,发现pyenv无法编译Python了(怀疑和系统升级有关,但不确定)。pyenv是通过brew安装的(版本2.3.19),之前能正常编译Python 3.10.4,但现在重新安装该版本时出现以下错误:
BUILD FAILED (OS X 13.4 using python-build 20180424) Inspect or clean up the working tree at /var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/python-build.20230611185357.74229 Results logged to /var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/python-build.20230611185357.74229.log Last 10 log lines: File "/private/var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/python-build.20230611185357.74229/Python-3.10.12/Lib/ensurepip/__init__.py", line 287, in _main return _bootstrap( File "/private/var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/python-build.20230611185357.74229/Python-3.10.12/Lib/ensurepip/__init__.py", line 203, in _bootstrap return _run_pip([*args, *_PACKAGE_NAMES], additional_paths) File "/private/var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/python-build.20230611185357.74229/Python-3.10.12/Lib/ensurepip/__init__.py", line 104, in _run_pip return subprocess.run(cmd, check=True).returncode File "/private/var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/python-build.20230611185357.74229/Python-3.10.12/Lib/subprocess.py", line 526, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '["/private/var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/python-build.20230611185357.74229/Python-3.10.12/python.exe", "-W", "ignore::DeprecationWarning", "-c", "\nimport runpy\nimport sys\nsys.path = ['/var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/tmp18yfiiwu/setuptools-65.5.0-py3-none-any.whl', '/var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/tmp18yfiiwu/pip-23.0.1-py3-none-any.whl'] + sys.path\nsys.argv[1:] = ['install', '--no-cache-dir', '--no-index', '--find-links', '/var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/tmp18yfiiwu', '--root', '/', '--upgrade', 'setuptools', 'pip']\nrunpy.run_module("pip", run_name="__main__", alter_sys=True)\n']' died with <Signals.SIGABRT: 6>. make: *** [install] Error 1
(搞不懂为什么会操作.exe文件...)
之后我尝试了几乎所有能找到的方法:重新安装pyenv、重新安装xcode-select、更新Homebrew并升级所有包,但都没有效果。
尝试安装3.9、3.10和3.11的最新版本时:
- 安装3.9和3.10时出现上述相同的.exe文件错误;
- 安装3.11时出现链接错误:
Undefined symbols for architecture x86_64: "_libintl_bindtextdomain", referenced from: __locale_bindtextdomain in _localemodule.o "_libintl_dcgettext", referenced from: __locale_dcgettext in _localemodule.o "_libintl_dgettext", referenced from: __locale_dgettext in _localemodule.o "_libintl_gettext", referenced from: __locale_gettext in _localemodule.o "_libintl_setlocale", referenced from: __locale_setlocale in _localemodule.o __locale_localeconv in _localemodule.o "_libintl_textdomain", referenced from: __locale_textdomain in _localemodule.o ld: symbol(s) not found for architecture x86_64 clang-16: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [Programs/_freeze_module] Error 1 BUILD FAILED (OS X 13.4 using python-build 20180424) Inspect or clean up the working tree at /var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/python-build.20230611184550.63292 Results logged to /var/folders/5j/xmpgv80d18s_r90jvtyftpph0000gn/T/python-build.20230611184550.63292.log Last 10 log lines: "_libintl_gettext", referenced from: __locale_gettext in _localemodule.o "_libintl_setlocale", referenced from: __locale_setlocale in _localemodule.o __locale_localeconv in _localemodule.o "_libintl_textdomain", referenced from: __locale_textdomain in _localemodule.o ld: symbol(s) not found for architecture x86_64 clang-16: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [Programs/_freeze_module] Error 1
解决思路
针对Python 3.9/3.10的.exe错误
设置编译环境变量
执行以下命令临时配置环境,再尝试安装:export PYTHON_CONFIGURE_OPTS="--enable-framework" export MACOSX_DEPLOYMENT_TARGET=13.4 pyenv install 3.10.4若生效,可将这两行添加到
~/.zshrc或~/.bash_profile中永久生效。清理pyenv缓存
删除缓存的源码包,重新下载编译:rm -rf ~/.pyenv/cache/*
针对Python 3.11的链接错误(libintl符号缺失)
安装gettext依赖并指定编译链接路径:
brew install gettext export LDFLAGS="-L$(brew --prefix gettext)/lib" export CPPFLAGS="-I$(brew --prefix gettext)/include" pyenv install 3.11.x # 替换为具体版本号
通用排查步骤
- 确保Xcode Command Line Tools为最新:
xcode-select --install sudo xcode-select --reset - 检查Homebrew状态并修复问题:
根据提示完成修复后再尝试编译。brew doctor
内容的提问来源于stack exchange,提问作者Zach Moshe
相关产品推荐
相关产品推荐

