Как установить PyCairo 1.10 на Mac OSX с Python по умолчанию

Кто-нибудь устанавливал pycairo 1.10 на Mac с помощью новой сборки waf? Его сбой не может найти заголовки python.


person Community    schedule 30.07.2011    source источник


Ответы (3)


Я думаю, что waf серьезно сломан для Mac OS X :(

Вот как это сработало для меня. После того, как python waf configure не удалось найти Python.h, я просмотрел файл config.log, расположенный в каталог_сборки, и обнаружил, что истинной причиной сбоя была несовместимая архитектура. Сценарий waf пытается создать простой исходный файл с вызовами CPython, используя архитектуру i386. Это не удается, потому что мой python построен для архитектуры x86_64.

Я думаю, вы можете пересобрать python как универсальный двоичный файл, я этого не пробовал. Однако можно собрать pycairo с использованием архитектуры x86_64. Вот как.


Моя установка:

$ python --version
Python 2.7.2

$ type python
python is /usr/local/bin/python

$ file /usr/local/bin/python
/usr/local/bin/python: Mach-O 64-bit executable x86_64

$ brew --version
0.8

Важно: моя версия Python создана для архитектуры x86_64. Прежде чем выполнять шаги, описанные ниже, убедитесь, что это относится и к вам.

brew означает домашнее пиво. Вы должны использовать его вместо fink или MacPorts, чтобы следующие шаги работали для вас.


Теперь, чтобы установить cairo и pycairo, я делаю следующее:

  1. brew install cairo (версия 1.10.2 на сегодняшний день)
  2. Получите исходный код pycairo для python 2.x (если вы получите снимок, он будет называться py2cairo, тогда как для pycairo теперь требуется python 3.x). Я использовал источник из ветки master (коммит f3435910d8f5365b45ebd4216f4043383c9e3e19)
  3. Откройте wscript в выбранном вами редакторе, найдите строку env = ctx.env в функции configure и добавьте следующую строку под ней.

    env.append_unique('CFLAGS', ['-arch', 'x86_64'])

  4. Сохраните файл

  5. Запустите эти команды в своем терминале:

    export CC=/usr/bin/gcc

    export PKG_CONFIG_PATH=/usr/local/Cellar/cairo/1.10.2/lib/pkgconfig/

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

  6. Затем запустите команды waf, описанные в файле INSTALL pycairo:

    python waf configure

    python waf build

    python waf install

Это должно сделать это. Если у вас не получится, думаю, лучше поднять тему в рассылке pycairo (если она есть).

person Alexei Sholik    schedule 27.08.2011
comment
Ха-ха, я попробовал это, так как хотел проверить пиво, и это сработало. Спасибо. - person ; 30.08.2011
comment
Незначительная придирка — вы на самом деле не используете питон по умолчанию? - person jabley; 27.09.2011
comment
@jabley Python по умолчанию слишком стар. В версии 2.7 добавлено много полезных мелочей — python.org/getit/releases/2.7 - person Alexei Sholik; 27.09.2011
comment
Мне пришлось выполнить несколько дополнительных шагов, чтобы правильно установить LD_LIBRARY_PATH и несколько других переменных env, с помощью инструкций здесь: niconomicon.net/blog/2011/10/09/ - person llimllib; 17.11.2011
comment
Я выполнил эти шаги, но получил ошибку Cairo pkgconfig requires xcb-shm package which is not installed. Я изменил PKG_CONFIG_PATH на export PKG_CONFIG_PATH=/usr/local/Cellar/cairo/<VERSION>/lib/pkgconfig/:/opt/X11/lib/pkgconfig, и шаг настройки сработал. Источник: github.com/mxcl/homebrew/issues/14123 - person Jonathan Drake; 24.02.2013

Для тех, кто возвращается к этому, я смог установить py2cairo на OSX Lion с немного другим подходом, основанным на ссылке llimllib. Надеюсь это поможет:

python waf clean
export PYTHONPATH=/Library/Frameworks/Python.framework/Versions/2.7/
export LD_LIBRARY_PATH=/Library/Frameworks/Python.framework/Versions/2.7/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/Library/Frameworks/Python.framework/Versions/2.7/lib:$LD_LIBRARY_PATH
export LINKFLAGS='-search_dylibs_first  -L /Library/Frameworks/Python.framework/Versions/2.7/lib/'
export ARCHFLAGS='-arch x86_64'
export CC=/usr/bin/gcc-4.2
export PKG_CONFIG_PATH=/usr/local/Cellar/cairo/1.10.2/lib/pkgconfig/

python waf configure --prefix=$PYTHONPATH
python waf build
python waf install
person Community    schedule 19.03.2012
comment
Работал для меня, используя библиотеку Mac Ports cairo, просто не устанавливал pkg_config_path вышеуказанные флаги, где достаточно - person Dr BDO Adams; 06.12.2012
comment
У меня работало без флагов CC или PKG_CONFIG_PATH. - person lorcan; 29.10.2013

Шаг андроида почти работает. нужно использовать (из llimllib):

export ARCHFLAGS='-arch x86_64'

на шаге 5, и тогда python waf install может преуспеть.

person zhanxw    schedule 21.12.2011