Как установить Pycairo на OSX? - PullRequest
       22

Как установить Pycairo на OSX?

11 голосов
/ 01 октября 2009

Я пытаюсь установить 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, казалось, работал, но make потерпел неудачу с:

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

Что я делаю не так?

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

Ответы [ 5 ]

10 голосов
/ 07 мая 2015

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

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

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

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

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

7 голосов
/ 28 ноября 2009

Похоже, вы смешиваете различные варианты установки здесь. Команда системы пакетов MacPorts port install должна автоматически извлекать все зависимости, необходимые для конкретного пакета, поэтому задача состоит в том, чтобы начать с правильного проекта верхнего уровня. Для пакетов 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), и, если вы запустите его, вы, вероятно, найти, что вы можете импортировать Каир там. Теперь, когда может быть в порядке для ваших нужд, но Python 2.4 довольно старый и больше не поддерживается, поэтому, если вы только начинаете, может быть, лучше начать с Python 2.6, одной из двух текущих версий Python. Для этого все, что вам нужно сделать, это:

sudo port install py26-cairo

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

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

sudo port uninstall py-cairo python24

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

6 голосов
/ 01 октября 2009

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

В целом, вся система ports / 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
    

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

3 голосов
/ 28 ноября 2009

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

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

2 голосов
/ 12 января 2010

В 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 из архива. Файл 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).

...