M1 Mac下通过pip安装matplotlib失败的问题求助
解决M1 Mac上Homebrew Python 3.9安装Matplotlib失败的问题
你遇到的这个报错我太熟悉了——之前在M1 MacBook上用Homebrew装的Python 3.9装Matplotlib时,也一模一样卡在3.3.4、3.3.3版本的编译上,反复重试都失败。先给你说根源:
Matplotlib 3.3.x系列完全没有适配M1的ARM64架构预编译包,pip找不到现成的轮子(wheel),就只能尝试从源码编译安装。但编译Matplotlib需要依赖FreeType、libpng、NumPy等库,这些库在M1的ARM环境下要么没有适配的版本,要么编译时的路径配置有问题,直接导致编译卡住然后抛出一堆错误,而且自动降级到3.3.3也没用,因为整个3.3系列都没做ARM适配。
下面给你两种解决方案,优先选第一种,省心又高效:
方法一:安装适配M1的Matplotlib新版本
Matplotlib从3.4.0版本开始正式支持ARM64架构,官方提供了预编译的wheel包,直接指定版本安装就行:
pip3 install matplotlib>=3.4.0
执行这个命令后,pip会直接下载ARM64的预编译包,不用编译,几十秒就能完成安装,亲测有效。
方法二:强制编译3.3.x版本(仅当项目必须用旧版本时)
如果因为项目依赖限制必须装3.3.x,那得先把编译依赖的系统库配齐,再指定编译路径:
- 先通过Homebrew安装编译所需的依赖:
brew install freetype libpng pkg-config
- 然后用pip强制从源码编译,同时指定Homebrew的库路径:
pip3 install matplotlib==3.3.4 --no-binary :all: --global-option=build_ext --global-option="-I/opt/homebrew/include" --global-option="-L/opt/homebrew/lib"
⚠️ 注意:这个方法编译时间很长(可能要10分钟以上),而且容易因为环境变量、依赖版本不匹配等问题失败,除非万不得已不建议用。
额外小贴士
- 确保你的Homebrew是装在
/opt/homebrew路径下的——这是M1 Mac原生ARM架构Homebrew的默认路径,如果你的Homebrew在/usr/local,说明是Rosetta2转译的x86版本,这种情况建议重装原生ARM的Homebrew,不然后续装Python包还会遇到各种架构兼容问题。 - 先升级pip到最新版,旧版本的pip可能识别不到ARM64的预编译包:
pip3 install --upgrade pip
内容的提问来源于stack exchange,提问作者williameo
相关产品推荐
相关产品推荐

