Как установить SciPy на Apple Silicon (ARM / M1)

Я успешно установил python 3.9.1 с Numpy и Matplotlib на новый Mac mini с Apple Silicon. Однако я не могу установить SciPy: я получаю ошибки компиляции при использовании

python3 -m pip установить scipy

Я также попытался установить все из brew, и import scipy работает, но его использование дает ошибку seg. Я установил ARM-версии lapack и openblas, но это не решает проблему.

У кого-нибудь получилось? (Мне интересно запускать его изначально, а не через Rosetta).


person David Sénéchal    schedule 16.01.2021    source источник


Ответы (5)


Возможна установка на обычный питон arm64 brew, нужно его скомпилировать самостоятельно.

Сначала мне пришлось скомпилировать numpy, для чего требуются cython и pybind11:

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/

Затем, наконец, compilescipy:

pip3 install --no-binary :all: --no-use-pep517 scipy
person TheRijn    schedule 08.03.2021
comment
Мне пришлось brew install openblas gfortran перед numpy ... numpy нужен был хотя бы openblas - person Anentropic; 09.03.2021
comment
К сожалению, компиляция SciPy завершилась неудачно с error: Command "ar rcs build/temp.macosx-10.14.6-arm64-3.8/libsuperlu_src.a build/temp.macosx-10.14.6-arm64-3.8/scipy/sparse/linalg/dsolve/SuperLU/SRC/dlaqgs.o [………]" failed with exit status 1 :( - person MattiSG; 17.03.2021
comment
Этот ответ сработал для меня в OSX 11.2.3 (20D91) с MacBook Pro (13 дюймов, M1, 2020). У меня не было ошибок компиляции, как @MattiSG - person Greg Hilston; 01.04.2021
comment
У меня это сработало, но впоследствии scikit-learn (pip install sklearn) - нет. Я поднял это, потому что заметки на scikit- learn.org/stable/ и ссылка на github там предлагают (для моих глаз новичков), что sklearn следует установить при успешной установке scipy. Прежде чем задать новый вопрос, я подумал, что люди, которые немного поработали, также могут дать совет по этой связанной проблеме. - person user1071516; 27.05.2021
comment
Мне нужен pip install pythran - person Golf Monkey; 13.07.2021

Вы можете установить miniforge из https://github.com/conda-forge/miniforge#miniforge3 а затем установите эти пакеты с помощью,

conda install numpy scipy matplotlib
person isuruf    schedule 17.01.2021
comment
Я сделал. Это вызывает segfault всякий раз, когда я импортирую подмодуль scipy. Однако Numpy и matplotliib в порядке. - person David Sénéchal; 17.01.2021
comment
Теперь это работает! Спасибо! - person David Sénéchal; 17.01.2021
comment
Вы также можете установить miniforge с помощью brew: brew install --cask miniforge - person climatebrad; 09.02.2021
comment
Спасибо! Установка сработала для меня, однако я застрял с импортом установленных пакетов в виртуальных средах, где мои локальные пакеты игнорировались. Решение описано здесь: stackoverflow.com/questions/66768259/ - person MattiSG; 24.03.2021

Для меня самые простые решения:

brew install scipy

Вероятно, хорошая идея отредактировать PATH, поэтому по умолчанию будет версия homebrew.

person arkhein    schedule 28.04.2021
comment
Обратите внимание, что если вы это сделаете, brew установит python3.9 в этом месте /opt/homebrew/Cellar/[email protected]/3.9.6/bin/python3, и вы сможете импортировать scipy, только если запустите этот исполняемый файл python - person cmoses; 08.07.2021

Это решение работало на моем компьютере M1 с pyenv:

brew install openblas
OPENBLAS="$(brew --prefix openblas)" pip install numpy scipy
person dwolfeu    schedule 18.05.2021

Мне удалось установить scipy на Apple Silicon. В основном я следовал инструкциям 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}"
person hobozero    schedule 04.06.2021