2013-02-11 3 views
29

Я успешно построил/установил NumPy на моем mac os x для python 2.7.3. Теперь я хотел бы построить/установить scipy. Я загрузил его из git-хаба. Зашел в каталог. Ран питона setup.py строить и, казалось, будет работать до тех пор, пока не наткнулся на эту ошибку:SciPy build/install Mac Osx

customize Gnu95FCompiler 
Could not locate executable gfortran 
Could not locate executable f95 
customize NAGFCompiler 
customize AbsoftFCompiler 
Could not locate executable f90 
Could not locate executable f77 
customize IBMFCompiler 
Could not locate executable xlf90 
Could not locate executable xlf 
customize IntelFCompiler 
Could not locate executable ifort 
Could not locate executable ifc 
customize GnuFCompiler 
Could not locate executable g77 
customize G95FCompiler 
Could not locate executable g95 
customize PGroupFCompiler 
Could not locate executable pgfortran 
don't know how to compile Fortran code on platform 'posix' 
building 'dfftpack' library 
error: library dfftpack has Fortran sources but no Fortran compiler found 

Я думал, что у меня был Fortran установлен для NumPy ... не догадываетесь? Как загрузить его?

+0

Вам нужна последняя версия? Почему бы не использовать easy_install или pip? – BenDundee

+0

Я попробовал pip, когда я устанавливал NumPy, и я смутился, я загрузил homebrew, и после этого Numpy работал. – Megan

+2

Позвольте мне сказать: если вы планируете что-либо делать в Python, вы, вероятно, захотите узнать, как вывести трубку. – BenDundee

ответ

85

Ваша проблема заключается в том, что вы должны установить Fortran компилятор для создания scipy.

Кроме того, если у вас уже есть numpy, который построен с поддержкой Fortran, вам может потребоваться его заменить. Некоторые из предустановленных версий Python от Apple имеют такую ​​предустановленную сборку numpy.


Самый простой способ получить Fortran - Homebrew. Как говорят the docs, вам нужно сначала установить 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, поэтому, если у вас его нет, получите его первым. Apple, предварительно установленный Python, по крайней мере, 10,7 и 10,8, включает в себя easy_install, но не pip, поэтому самый простой способ сделать это:

sudo easy_install pip 

Однако, вы можете рассмотреть возможность использования virtualenv вместо глобальной установки (в этом случае вы также хотите удалить sudo по следующим командам).

Теперь, когда вы получили gfortran и pip, все, что вам нужно сделать, это:

sudo pip install --upgrade numpy 
sudo pip install scipy 

Предостережения:

  • Приведенные выше инструкции предназначены для Apple, предварительно установленной версии (ы) Python. Если вы используете другую версию 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 install instructions. Но сначала убедитесь, что у вас его еще нет.

    • Если вы используете 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 и НКА).

  • Сторонние бинарные установки, такие как 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.

Если вы хотите повлиять на приложения GUI (и LaunchAgents и т. Д.), По-видимому, больше не поддерживается способ, но устаревший QA1067, похоже, все еще работает в Lion. Это также то, что предлагают Homebrew FAQ и Python FAQ.

Если вы заботитесь только о сеансах командной строки (как Terminal.app, так и удаленного ssh), вместо этого вы можете просто выполнить стандартную Unix-версию редактирования соответствующего файла профиля. Какой файл профиля подходит, зависит от того, на что вы хотите повлиять. (Все пользователи или только один пользователь? Bash или любая оболочка? И так далее.) Если вы не знаете, какой из них вы хотите, вам действительно нужно провести некоторое исследование. Если вы не хотите учиться, просто делайте ~/.profile, а затем не жалуйтесь, если это не то, что вы хотели.

В любом случае, вы должны убедиться, что соответствующий путь доходит до /usr/bin в PATH. Так, например, можно добавить следующее ~/.profile:

PATH=/usr/local/bin:$PATH 
export PATH 

(. Вы, конечно, необходимо либо создать новый терминал оболочку или источник сценарий, прежде чем он вступит в силу)

If вы используете homebrew, brew doctor расскажет, правильно ли вы это сделали.

+2

Кто бы ни отклонил это, позаботьтесь, чтобы объяснить, почему? – abarnert

+0

awesomely полезный пост, избегал установки scipy локально, нет моего ноутбука до сих пор, способ рекламы на scipy-сайте (с использованием macports) не удался для меня, но это отлично работало – qwwqwwq

+1

команда для установки компилятора fortran теперь 'brew install gcc ' – jjfine

0

я homebree установлен таким образом, я собираюсь попробовать: $ заварить установить gfortran надеюсь, это работает

+0

Вы заваривали свой Python ? Если это так, вы получаете бесплатное приложение ... Это также звучит так, будто вы на Mac. В этом случае вы можете получить компилятор Fortran из XCode, я думаю. – BenDundee

+0

Да, у меня есть пиво на моем питоне, у меня есть пип на некоторое время. Я использовал его для установки Django, я просто использовал его через некоторое время. Да, я просто получил Xcode, все еще работающий над тем, как научиться перемещаться и использовать это. В конечном итоге я все выясню, есть много разных компонентов. – Megan

+0

Пробная загрузка Fortran с использованием пива получила эту ошибку: curl: (33) HTTP-сервер, похоже, не поддерживает байтовые диапазоны. Не удается возобновить работу. Ошибка: загрузка не удалась: https://downloads.sf.net/project/machomebrew/Bottles/gfortran-4.7.2.lion.bottle.tar.gz – Megan

-2

Здесь приведены подробные инструкции по чистой установке на OSX 10.7. Если бы я был вами, я бы выбрал этот маршрут вместо того, чтобы пытаться загружать и строить источники самостоятельно.

http://www.thisisthegreenroom.com/2011/installing-python-numpy-scipy-matplotlib-and-ipython-on-lion/

+0

Эта страница явно говорит вверху, что она устарела. Он также предлагает использовать Homebrew для установки еще одного Python 2.7 вместе с Apple, то, что Homebrew специально рекомендует не делать. И это требует ручного взлома PATH и ссылок. В целом, я не думаю, что это хороший ответ. – abarnert

+0

Whatevs. У нее уже установлен python, кроме того, что инструкции кажутся более или менее такими же, как и вы опубликовали. – BenDundee

+0

Если вы просто не хотите, чтобы scipy был «более или менее» установлен и не нуждался в нем, на самом деле, скажем, работать, «whatevs» - не очень полезное отношение. Есть несколько существенных различий между тем, что я предлагал, и тем, что предлагает эта статья, и если вы не можете сказать разницу (или если вы слишком ленивы и просто tl; dr все это), вы не сможете чтобы помочь кому-то, кто сталкивается с проблемами (кто будет следовать за этой страницей). – abarnert

3

Похоже, ваша актуальная проблема была только прерывистый скачать отказ от Sourceforge:

curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume. Error: Download failed: downloads.sf.net/project/machomebrew/Bottles/… 

Homebrew должен просто восстановить автоматически из этой ошибки, если вы пытаетесь brew install gfortran снова. Итак, это первое, что нужно попробовать.

Если это не помогает, обратитесь к brew doctor и найдите brew install -d gfortran, чтобы увидеть, где он хранит частично загруженный файл, чтобы вы могли удалить его вручную и повторите попытку.

Если все остальное не удается, вы можете заставить его не использовать бутылку с помощью --build-from-source. Конечно, создание из источника занимает намного больше времени, чем установка бинарной бутылки, но он должен давать тот же результат.

2

Я не думаю, что эта проблема слишком сложна.

1) Установите для ГПГА

Cd /Library/Frameworks/Python.framework/Versions/ ¯Ln -s 2.7 Текущего

кд/USR/бен ет -f питон пер -s/Library /Frameworks/Python.framework/Versions/Current/bin/python питон

2) скачать яйцо из https://pypi.python.org/pypi/setuptools#files Суда SH Setuptools-0.6c11-py2.7.egg

3) Просто скачайте и установите gfotran по этой ссылке: http://r.research.att.com/tools/

4) После этого вам нужно ввести: SUDO пип установить -U SciPy SUDO пип установить -U Numpy SUDO пип установить -U Matplotlib

Надеюсь, у вас должно быть все, что вы хотите иметь.

1

Я встретил ту же проблему, используя следующие шаги:
1. заварить установить gfortran
2. пип установить SciPy

, то это нормально.

+1

сделайте это 'brew install gcc' на момент написания – grisaitis

3

По состоянию на 20.05.2012, если вы используете варево, Fortran устанавливается как часть gcc. Отдельного пакета Fortran не требуется. Вот что работало для меня, чтобы установить NumPy:

  1. установку самогона, согласно ответу abamert (или см http://brew.sh/)
  2. установить GCC (brew install gcc)
  3. подтверждает НКА этого варева является правильным (which gcc следует указать в/USR/местные/бен/ССАГПЗ)
  4. export ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future (см Problems with pip install numpy - RuntimeError: Broken toolchain: cannot link a simple C program)
  5. pip install numpy
1

Я имел gfortran установлен и двоичная был gfortran-4.2. Итак, каждый раз, когда я пытался установить SciPy, компилятор не мог найти, потому что он пытался использовать gfortran.

Что я сделал создать символическую ссылку на gfortran-4,2 к gfortran.

Чтобы найти, где вы должны создать символическую ссылку прогон:

$ which gfortran-4.2 
/usr/local/bin/gfortran-4.2 

Тогда симлинки его:

ln -s /usr/local/bin/gfortran-4.2 /usr/local/bin/gfortran 
0

Для OSX Йосемити и, возможно, более ранних версий OSX тоже, вы можете загрузить и установить fortran перед запуском pip install scipy. Чтобы загрузить последнюю версию компилятора Фортрана, просто перейдите по следующей ссылке:

https://gcc.gnu.org/wiki/GFortranBinaries#MacOS

0

Я думаю, что ваша версия Xcode и OSX дело. У меня были Xcode: 6.4 и Os X 10.11.1 и все еще получались одинаковые сообщения об ошибках (не удалось найти gfortran и т. Д.). Я пробовал много вещей, включая тщательный ответ от @abarnert, но решение для меня было обновлено Xcode (до 7.1.1).