Ответ 1
Ваша проблема в том, что вам нужно установить компилятор Fortran для сборки scipy
.
Кроме того, если у вас уже есть numpy
, который был создан с поддержкой Fortran, вам может потребоваться его заменить. В некоторых предустановленных версиях Python от Apple установлена такая предварительная установка numpy
.
Самый простой способ получить Fortran - Homebrew. Как документы говорят, вам нужно сначала установить Xcode и его средства командной строки. (Способ установки инструментов командной строки изменяется почти с каждой основной версией Xcode, поэтому см. Связанные документы для актуального объяснения.) Затем установите Homebrew. URL-адрес установки несколько раз менялся, поэтому см. Домашнюю страницу Homebrew или инструкции по установке (http://brew.sh/), но это будет примерно так:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Тогда:
brew install gcc
(Обратите внимание, что до некоторого времени в 2014 году gfortran
был отдельным рецептом от gcc
, поэтому команда была brew install gfortran
. Но если вы попробуете это сейчас, вы получите сообщение об ошибке "GNU Fortran теперь предоставляется как часть GCC и может быть установлен с помощью: brew install gcc
".)
Вы действительно хотите использовать pip
для установки scipy
, поэтому, если у вас этого нет, сначала получите его. Предварительно установленный Python от Apple, по крайней мере в 10.7 и 10.8, включает easy_install
, но не pip
, поэтому самый простой способ сделать это:
sudo easy_install pip
Однако вы можете захотеть использовать virtualenv
вместо глобальной установки (в этом случае вы также хотите удалить sudo
в следующих командах).
Теперь, когда у вас есть gfortran
и pip
, все, что вам нужно сделать, это следующее:
sudo pip install --upgrade numpy
sudo pip install scipy
Предостережения:
-
Инструкции, приведенные выше, предназначены для предустановленной версии (ов) для Python от Apple. Если вы используете другую версию Python, вам действительно стоит подумать об этом. Сохранение путей, установленных пакетов и т.д. В синхронизации - это кошмар. Исключение из этого - если вы хотите версию Python 3.x, и в этом случае установка его с python.org или Homebrew вполне разумна. Не будет никаких столкновений, потому что
python
,pip2.7
и т.д. Будут для Apple Python;python3
,pip3.3
и т.д. для версии 3.x. -
Если у вас уже есть
pip
, но боюсь, что он устарел,pip install --upgrade pip
. (Помимо преимуществ безопасности и надежности, это может сэкономить вам много времени, сделав вас совместимым с двоичными колесами для некоторых научных стеков или других модулей.) -
Для большинства установок, отличных от Apple Python (и, возможно, даже Apple в 10.9 или 10.10, я не проверял), вы не должны использовать
easy_install
для установкиpip
. Следуйте инструкциямpip
установки. Но сначала убедитесь, что у вас его еще нет.- Если вы используете
virtualenv
/venv
, ваши виртуальные среды уже будут включатьpip
. - Python 3.4 или новее может (и будет, если из установщика python.org) включить
pip
bootstrap. Если у вашего 3.4+ еще нетpip
, вы можете захотетьpython -m ensurepip
установить его. - Некоторые сторонние установки, такие как Homebrew или ActiveState, включают
pip
.
- Если вы используете
-
Для Python 3.3 или более поздней версии вы можете использовать встроенный
venv
вместоvirtualenv
. -
Если вы используете MacPorts, Fink, gentoo-alt и т.д., вы должны установить пакет
scipy
, который поставляется вместе с вашим менеджером пакетов, и он будет тянуть все, что ему нужно (возможно, даже включая восстановление Python и GCC). -
Сторонние двоичные установки, такие как Enthought и ActiveState, могут уже включать
scipy
и все остальное, что вам нужно. Если нет, инструкции в основном такие же, как указано выше, но вам придется угадать, какие шаги следует пропустить или следовать, будь тоsudo
и т.д.
Если вы используете не-Apple-сборку Python 2.7 и хотите избежать проблем с PATH, вам нужно сделать две вещи:
Во-первых, ни в коем случае не устанавливайте пакеты Python, содержащие скрипты или двоичные файлы (включая pip
) более чем на одном Python. Например, если вы установите ipython
для Apple 2.7 и Homebrew 2.7, оба попытаются создать сценарии с именем /usr/local/bin/ipython
и /usr/local/bin/ipython-2.7
. Если вам повезет, одна установка завершится неудачей. В противном случае, они оба удастся, один в конечном итоге перепишет другой, и вы не сможете запустить перезаписанную версию.
Во-вторых, убедитесь, что путь к альтернативным скриптам и двоичным файлам Python находится перед Apple в PATH. В зависимости от того, какой альтернативный Python вы установили и какие инструкции вы следовали, это может быть:
-
/usr/local/bin
-
/Library/Frameworks/Python.framework/Versions/2.7/bin
-
/usr/local/share/python2.7/bin
-
/usr/local/Cellar/python/2.7.3/bin
- что-то еще
Независимо от пути, вам нужно отредактировать переменную PATH.
Если вы хотите повлиять на приложения с графическим интерфейсом (и LaunchAgents и т.д.), по-видимому, больше не поддерживается способ, но устаревший QA1067, похоже, все еще работает в Lion. Это также то, что Homebrew FAQ и Python FAQ предлагают.
Если вы заботитесь только о сеансах командной строки (как Terminal.app, так и удаленной ssh), вместо этого вы можете просто выполнить стандартную версию Unix для редактирования соответствующего файла профиля. Какой файл профиля подходит, зависит от того, на что вы хотите повлиять. (Все пользователи или только один пользователь? bash или любая оболочка? И так далее.) Если вы не знаете, какой из них вы хотите, вам действительно нужно провести некоторое исследование. Если вы не хотите учиться, просто сделайте ~/.profile
, а затем не жалуйтесь, если это не то, что вы хотели.
В любом случае, вы должны убедиться, что соответствующий путь предшествует /usr/bin
в PATH. Так, например, вы можете добавить следующее в ~/.profile
:
PATH=/usr/local/bin:$PATH
export PATH
(Разумеется, вам нужно либо создать новую оболочку терминала, либо указать источник script, прежде чем она вступит в силу.)
Если вы используете homebrew
, brew doctor
расскажет вам, правильно ли вы это сделали.