M1 Mac安装Django~=4.0失败:backports.zoneinfo编译报错
解决M1 Mac上Python3.8.9安装Django4.x时backports.zoneinfo编译失败的问题
核心问题是编译backports.zoneinfo时找不到Python.h头文件,以下是几个有效解决方法:
方法1:优先使用预编译wheel包,跳过源码编译
直接让pip使用现成的预编译二进制包,避免源码编译环节:
pip3 install django~=4.0 --only-binary :all:
如果单独安装backports.zoneinfo也失败,同样用这个命令:
pip3 install backports.zoneinfo --only-binary :all:
方法2:确保Xcode命令行工具及Python开发组件完整
- 安装或重装Xcode命令行工具:
xcode-select --install
- 若已安装,切换到完整Xcode路径(确保头文件路径正确):
sudo xcode-select --switch /Applications/Xcode.app
- 验证
Python.h是否存在,执行:
find /Applications/Xcode.app -name Python.h | grep 3.8
如果能找到路径,说明头文件存在,重新执行Django安装命令即可。
方法3:指定arm64架构执行安装
M1 Mac的混合架构可能导致编译冲突,强制用arm64架构运行pip:
arch -arm64 pip3 install django~=4.0
方法4:重新安装带开发组件的Python3.8.9
系统自带的Python可能缺少开发头文件,用pyenv重新安装完整的Python3.8.9:
- 安装pyenv:
brew install pyenv
- 添加环境变量到
~/.zshrc(如果用bash则是~/.bashrc):
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc
- 重启终端后安装Python3.8.9:
pyenv install 3.8.9
- 设置当前shell使用该版本:
pyenv local 3.8.9
- 最后安装Django:
pip install django~=4.0
内容的提问来源于stack exchange,提问作者Anuj Pandey
相关产品推荐
相关产品推荐

