如何在 Apple Silicon (ARM / M1) 上安装 SciPy

问题描述

我已经在带有 Apple Silicon 的新 Mac mini 上成功安装了带有 Numpy 和 Matplotlib 的 python 3.9.1。但是,我无法安装 SciPy:使用时出现编译错误

python3 -m pip install scipy

我也尝试从 brew 安装所有东西,并且“import scipy”可以工作,但是使用它会导致段错误。我已经安装了 ARM 版本的 lapack 和 openblas,但这并不能解决问题。

有人成功了吗? (我有兴趣在本地运行它,而不是通过 Rosetta)。

解决方法

普通的arm64 brew python是可以安装的,需要自己编译。

首先我必须编译 numpy,这需要 cythonpybind11

pip3 install cython pybind11

然后可以编译numpy

pip3 install --no-binary :all: --no-use-pep517 numpy

然后我们需要自己编译scipy,它依赖于fortran和BLAS/LACK:

brew install openblas gfortran

告诉scipy在哪里可以找到这个库:

export OPENBLAS=/opt/homebrew/opt/openblas/lib/

然后最后编译scipy

pip3 install --no-binary :all: --no-use-pep517 scipy
,

您可以从 Mongo playground 安装 miniforge 然后安装这些软件包,

conda install numpy scipy matplotlib
,

This solution 使用 pyenv 在我的 M1 机器上工作:

brew install openblas
OPENBLAS="$(brew --prefix openblas)" pip install numpy scipy
,

对我来说最简单的解决方案:

brew install scipy

编辑 PATH 可能是个好主意,所以自制版本将是默认的。

,

我设法在 Apple Silicon 上安装了 scipy。我主要按照 lutzroeder 的说明进行操作:https://github.com/scipy/scipy/issues/13409

这些说明对我来说并不成功,但之后运行“pip3 install scipy”就成功了。我认为这为我解决了问题:

/opt/homebrew/bin/brew install openblas

export OPENBLAS=$(/opt/homebrew/bin/brew --prefix openblas)

export CFLAGS="-falign-functions=8 ${CFLAGS}"