53

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

python3 -m pip 安装 scipy

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

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

4

8 回答 8

59

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

如果numpy已经安装(从轮子),你需要卸载它:

pip3 uninstall -y numpy pythran

我必须编译numpy,这需要cythonpybind11

pip3 install cython pybind11

然后numpy可以编译:

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

Scipy 需要pythran(这应该在安装 numpy 之后发生):

pip3 install pythran

然后我们需要自己编译 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
于 2021-03-08T20:40:39.333 回答
40

这个在浪费时间后为我工作:

pip install --pre -i https://pypi.anaconda.org/scipy-wheels-nightly/simple scipy
于 2021-10-25T14:40:12.497 回答
37

该解决方案适用于我的 M1 机器pyenv

brew install openblas
OPENBLAS="$(brew --prefix openblas)" pip install numpy scipy
于 2021-05-18T12:34:59.987 回答
12

您可以从https://github.com/conda-forge/miniforge#miniforge3安装 miniforge ,然后安装这些软件包,

conda install numpy scipy matplotlib
于 2021-01-17T06:00:06.757 回答
7

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

brew install scipy

编辑 PATH 可能是个好主意,因此自制版本将是默认版本。

于 2021-04-28T20:56:54.367 回答
3

我设法在 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}"
于 2021-06-04T20:02:03.627 回答
2

对于那些短期需要它并且不想太忙的人 - 它似乎可以与 python 3.6.4 和 scipy 1.5.4 一起使用(Big Sur 11.5.2,M1 芯片)。

于 2021-09-08T15:06:06.200 回答
1

另外,如果有人有这个错误信息>

########### CLIB COMPILER OPTIMIZATION ###########
Platform      :
  Architecture: aarch64
  Compiler    : clang

CPU baseline  :
  Requested   : 'min'
  Enabled     : none
  Flags       : none
  Extra checks: none

CPU dispatch  :
  Requested   : 'max -xop -fma4'
  Enabled     : none
  Generated   : none
CCompilerOpt.cache_flush[809] : write cache to path 

我在编译 numpy 和 scipy 之前找到了这个解决方案

原因分析: 从上面的报错信息可以看出最后一个错误说明clang有错误,所以推测应该是编译器导致的错误,因为新版本的xcode命令工具使用了默认是arm版本的编译方式,如果我们要使用x86架构,需要通过环境变量手动设置具体架构。

export ARCHFLAGS="-arch x86_64"

例子:

3c790c45799ec8c598753ebb22/build/temp.macosx-10.14.6-arm64-3.8/ccompiler_opt_cache_clib.py
    ----------------------------------------
ERROR: Command errored out with exit status 1: /Users/daniel_edu/Projects/PERSONAL/great_expectation_demo/.env/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/zb/c_b9kh2x1px7vl5683rwz8fr0000gn/T/pip-install-y8alaej_/numpy_3d813a3c790c45799ec8c598753ebb22/setup.py'"'"'; __file__='"'"'/private/var/folders/zb/c_b9kh2x1px7vl5683rwz8fr0000gn/T/pip-install-y8alaej_/numpy_3d813a3c790c45799ec8c598753ebb22/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/zb/c_b9kh2x1px7vl5683rwz8fr0000gn/T/pip-record-q9vraevr/install-record.txt --single-version-externally-managed --compile --install-headers /Users/daniel_edu/Projects/PERSONAL/great_expectation_demo/.env/include/site/python3.8/numpy Check the logs for full command output.
(.env) ➜  great_expectation_demo git:(master) ✗ export ARCHFLAGS="-arch x86_64"
(.env) ➜  great_expectation_demo git:(master) ✗ pip install --no-binary :all: --no-use-pep517 numpy
Collecting numpy
  Using cached numpy-1.21.5.zip (10.7 MB)
  Preparing metadata (setup.py) ... done
Skipping wheel build for numpy, due to binaries being disabled for it.
Installing collected packages: numpy
    Running setup.py install for numpy ... done
Successfully installed numpy-1.21.5

于 2021-12-26T15:41:02.600 回答