Установка MatplotLib в mac osx lion
Я пытался установить matplotlib в Mac OSX Lion. Пытался использовать двоичный файл, который находится на сайте sourcefourge, но я получил эту ошибку: "matplotlib требует System Python 2.7 для установки".
Я отправился на терминал и набрал python -version и проверил его требования.
После этого я попытался использовать пип, и при этом é получил следующую ошибку:
"src/_image.cpp: 908: ошибка: недопустимое использование неполного типа 'struct png_info_def"
Можете ли вы рассказать мне, как его установить?
Большое спасибо.
EDIT: я нашел способ, не устанавливая новую версию python:
http://the.taoofmac.com/space/blog/2011/07/24/2222
Ответы
Ответ 1
Вы можете попробовать "официальный" дистрибутив python, яблоко, возможно, изменило его. Вы можете найти здесь 2.7: http://www.python.org/download/
Возможно, вам придется повторно установить numpy, а также послесловие: http://sourceforge.net/projects/numpy/files/NumPy/1.6.1/
Я бы предложил установить scipy
Дайте мне знать, если это работает;)
Ответ 2
Это связано с изменением API для libpng v1.5 (который включен в Mac OSX Lion). Изменения уже были перенесены вверх по течению, поэтому вам нужно будет скомпилировать их из восходящего репозитория до следующей версии.
Вы можете следовать инструкциям http://jholewinski.wordpress.com/2011/07/21/installing-matplotlib-on-os-x-10-7-with-homebrew/
Ответ 3
Я следил за этой инструкциями по страницам. Я застрял в
pip install -e git+https://github.com/matplotlib/matplotlib#egg=matplotlib-dev
Тогда я сделал:
git clone https://github.com/matplotlib/matplotlib.git
cd matplotlib
python setup.py build
python setup.py install
Проверьте мою установку, набрав терминал:
python
import matplotlib
print matplotlib.__version__
print matplotlib.__file__
Я получил версию 0.10.0 dev (на момент написания этой статьи) и path/usr/local/Cellar/...
Ответ 4
Я бы рекомендовал использовать macports, он должен заботиться о зависимостях и был бы indepedent версии python системы.
РЕДАКТИРОВАТЬ: всего несколько разъяснений с учетом комментариев к этому ответу.
Зачем использовать macports (или другой установщик)? Поскольку они заботятся о зависимостях, предоставляют функциональные возможности для удаления и переключения между версиями (я успешно использовал последний для gcc и python). И поскольку место установки по умолчанию не является исполняемым файлом системы. Переопределение системы python может разорвать приложения, которые полагаются на нее (это, безусловно, верно во многих дистрибутивах Linux, а тем более на Mac OS X).
Когда это особенно полезно? Если вы хотите установить поверх версии python, отличной от системного python, и когда у вас есть расширения, отличные от python (C, С++, Fortran...).
Что вниз? Как отметил @Trond в комментариях, хорошо, если вы в порядке с сборками по умолчанию. У вас нет дескриптора опций конфигурации или компилятора, как если бы вы построили его из источника.
Хорошей альтернативой macports является fink, что, как представляется, дает вам больше контроля (строить из источника). Я не уверен, что он полностью готов для Mac OS X Lion.
Ответ 5
Я знаю, что это займет намного больше времени, но я бы рекомендовал установить python, numpy и matplotlib из источника, чтобы убедиться, что у вас есть согласованность в вашей системе. Из ошибки может возникнуть проблема с поддержкой libPNG. Я написал "" Как установить инструменты для python dev на Mac OSX", которые могут оказаться полезными. Он содержит инструкции по установке python, numpy, matplotlib и всех необходимых зависимостей. Я понимаю, что вы работаете с Python 2.7, а направления, которые я перечисляю, для Python 2.6.5, но это будет тот же подход. Надеюсь, ты получишь это на работу.
Ответ 6
Вы можете просто установить версию Matplotlib Python 2.6, предполагая, что Python2.6 включен в Lion (py2.5 и 2.6 включены в Mac OS 10.6 "Snow Leopard" - попробуйте ввести python2.6, чтобы узнать, установлена ли эта версия.).
В MacPorts вы делаете это через что-то вроде:
sudo port install py26-matplotlib
где py26 -... (или py25 -..., py27 -... и т.д.) указывает, для какой версии python он предназначен. (проверьте список поддонов/портов, чтобы получить правильное имя пакета, если я ошибаюсь)