Mac M1(arm-64)下pyenv+Python3.9.13安装uWSGI失败求助
解决Mac M1(arm64)安装uWSGI时
ld: library not found for -lintl错误 问题背景
在Mac M1(arm-64)设备上,使用pyenv管理的Python 3.9.13尝试从PyPI安装uWSGI时,链接阶段报错ld: library not found for -lintl。已创建config-3.9-darwin符号链接,但问题未解决。环境配置:
- Python 3.9.13
- pip 22.2.2
- pyenv 2.3.3
- 操作系统:Monterey 12.4
解决思路
方案1:安装gettext依赖并指定编译路径
-lintl是libintl库的链接参数,该库属于gettext工具集,Mac M1系统默认未预装。通过Homebrew安装后,让编译器能定位到该库:
- 安装gettext:
brew install gettext
- 设置环境变量并安装uWSGI:
export LDFLAGS="-L$(brew --prefix gettext)/lib" export CPPFLAGS="-I$(brew --prefix gettext)/include" pip install uwsgi
方案2:强制uWSGI跳过intl库链接
如果不需要uWSGI的国际化(i18n)功能,可以直接禁用对intl库的依赖:
pip install uwsgi --install-option="--no-lintl"
方案3:重新编译pyenv管理的Python
若pyenv安装的Python未正确关联gettext依赖,可能导致扩展编译时找不到库。重新编译Python并指定依赖路径:
- 卸载现有Python版本:
pyenv uninstall 3.9.13
- 设置环境变量并重新安装Python:
export LDFLAGS="-L$(brew --prefix gettext)/lib" export CPPFLAGS="-I$(brew --prefix gettext)/include" pyenv install 3.9.13
- 切换到该版本后重新安装uWSGI:
pyenv local 3.9.13 pip install uwsgi
内容的提问来源于stack exchange,提问作者Louis Hulot
相关产品推荐
相关产品推荐

