Как установить pycairo на osx?

Я пытаюсь установить pycairo (привязки Python для графическая библиотека cairo) под OSX.

Я начал с

easy_install pycairo

и получил:

Requested 'cairo >= 1.8.8' but version of cairo is 1.0.4

error: Setup script exited with Error: cairo >= 1.8.8 not found

Итак, я пошел на сайт cairo и загрузил последний пакет (1.8.8) из cairo, а также последний пакет того, что называется pixman (оба исходных пакета - не могли найти двоичные файлы osx)

разархивировать оба, каждый в своем собственном каталоге. для pixman, обычный ./configure ; make ; sudo make install работал только для cairo,./configure, похоже, сработало, но сделать не удалось:

In file included from cairo-analysis-surface.c:37:
cairoint.h:71:20: error: pixman.h: No such file or directory

Что я делаю неправильно?

И почему мне приходится так много бороться, чтобы получить библиотеку программного обеспечения для работы с ОС, которая "просто работает"? Почему darwin больше не похож на Linux?

Ответ 1

Я нашел эту инструкцию очень полезной и гораздо менее запутанной. Я нахожусь на Йосемите, и это сработало очень хорошо для меня. Эта инструкция использует домородок для установки. Поэтому, если у вас уже есть доморощенный, эти две команды должны быть полезны:

$ brew install cairo --use-clang 
$ brew install py2cairo

Для не-Homebrew установлен Python, эта инструкция предлагает установить PYTHONPATH для поиска pycairo. Вы можете установить PYTHONPATH в свой .bashrc/.profile/. Безотносительно к следующему:

PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH.

Мне лично не нужно было использовать эту последнюю часть инструкции, но она может вам помочь.

Ответ 2

Кажется, вы смешиваете различные варианты установки здесь. Командная строка port install для системы пакетов MacPorts должна автоматически извлекать все зависимости, необходимые для определенного пакета, поэтому трюк должен начинаться с правильного проекта верхнего уровня. Для пакетов python у MacPorts есть общее соглашение: пакеты, начинающиеся с py-, для python 2.4, те, у которых py25-, равны 2,5, и py26- для 2.6. В настоящее время в MacPorts доступны пакеты py-cairo, py25-cairo и py26-cairo.

Выбрав py-cairo, вы выбрали версию python2.4, и вы, вероятно, обнаружите, что MacPorts построил и установил для вас python2.4 (привязан к /opt/local/bin/python2.4), и, если вы запустите его, вы, вероятно, что вы можете импортировать cairo. Теперь это может быть хорошо для ваших нужд, но Python 2.4 довольно старый и больше не поддерживается, поэтому, если вы только начинаете, лучше начать с Python 2.6, одной из двух текущих версий Python. Для этого вам нужно всего лишь:

sudo port install py26-cairo

Это должно привести к любым отсутствующим зависимостям, в основном к MacPorts python2.6, которые вы можете запустить из /opt/local/bin/python2.6. Вы можете изменить свой $PATH в своем запуске оболочки script, возможно .bash_profile, чтобы положить /opt/local/bin на раннем этапе поиска.

Поскольку установка Cairo и его привязок к python кажется довольно сложной, для этого должно быть проще и лучше использовать полное решение MacPorts. Это означает, что вы безосновательно (и безвредно) установили пару экземпляров Python, которые вам не понадобятся. Но если вы хотите немного почистить вещи, вы можете легко удалить MacPorts python24 с помощью:

sudo port uninstall py-cairo python24

Полностью удалить установленный python.org python сложнее. Я объяснил процесс здесь. Но нет никакой насущной необходимости удалять либо до тех пор, пока вы держите свои пути прямо.

Ответ 3

Ok. Я решил это. Вводя решение здесь для дальнейшего использования, он может помочь кому-то.

В принципе, вся система портов /fink немного перепутана, а osx на самом деле не играет в мир linux-y.

Итак, шаги, которые мне нужно установить pycairo на OSX, были следующими:

  • загрузите последние исходные версии pixman, cairo, pycairo
  • извлечь все. Тогда:

    cd PIXMAN_DIR ; ./configure ; make ; sudo make install 
    cd CAIRO_DIR ; cp PIXMAN_DIR/pixman/*.h . ; ./configure ; make ; sudo make install
    cd PYCAYRO_DIR; locate cairo.pc 
    

    Мы надеемся, что несколько мест будут возвращены. выберите наиболее вероятный (один с новейшим каиром). Для меня это было "/opt/local/lib/pkgconfig/cairo.pc" и выполните:

    export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/
    

    после этого, еще в PYCAIRO_DIR, выполните:

    python setup.py install
    

Это должно сделать это...

Ответ 4

Команда port устанавливает библиотеку для установки python darwinports, которая отличается от структуры сборки (так что шаги 2 и 3 не должны работать). Вместо этого попробуйте sudo easy_install pycairo (хотя ваш шаг 4 должен быть эквивалентен этому).

Посмотрите также на which python, чтобы убедиться, что вы на самом деле используете питон, который вы считаете собой.

Ответ 5

В Mac OS вы можете установить несколько версий Python. У вас может быть еще больше, если вы решите установить Python через Fink или MacPorts. Когда вы компилируете библиотеки из источника, вы должны убедиться, что они указывают на правильную установку.

В настоящее время на моем компьютере установлены Python 2.5.1 и Python 2.6.4, которые я могу вызвать через python2.5 и python соответственно. Они живут в двух разных папках: /System/Library/Frameworks/Python.framework/Versions/2.5 и /Library/Frameworks/Python.framework/Versions/2.6

У меня возникла аналогичная проблема при компиляции pycairo 1.8.8 из tarball. Файл INSTALL в этом случае является вашим другом, так как содержит правильные инструкции, чтобы избежать возможных конфликтов версий. В основном вам нужно указать правильный префикс, чтобы пакет был установлен в правильной папке.

$ python -c "import sys; print sys.prefix"
  # make a note of the python prefix
$ ./configure --prefix=[python_prefix]
$ make
$ make install       # may require superuser access

Выполняя эти инструкции с помощью python2.5 и python, вы сможете правильно установить pycairo для обеих версий (или для любой версии, установленной через MacPorts/Fink).