Как собрать pgmagick под pythonbrew на OS X? - PullRequest
7 голосов
/ 20 марта 2012

У меня нет особого успеха при попытке собрать pgmagick на OS X Lion с XCode 4.3.1.

Я установил ImageMagick и GraphicsMagick вдоль бокового усиления, используя следующие команды (через homebrew):

$ brew install graphicsmagick --with-magick-plus-plus
$ brew install imagemagick --with-magick-plus-plus
$ brew install boost --with-thread-unsafe

тогда я клонирую репо на https://bitbucket.org/hhatto/pgmagick:

$ hg clone https://bitbucket.org/hhatto/pgmagick/src
$ cd pgmagick
$ python setup.py build

Однако я всегда получаю следующую ошибку:

ld: library not found for -lboost_python
collect2: ld returned 1 exit status

Исходя из вывода на стандартный вывод, настройка равна , ища правильное место для усиления (/usr/local/lib).

Я также пробовал easy_install и pip, но безуспешно. Я использую Pythonbrew, но также отключил это и попробовал использовать стандартную установку Python - все еще безуспешно.

Какие-либо предложения о том, как я могу решить проблему или провести дальнейшую диагностику проблемы?

Ответы [ 5 ]

8 голосов
/ 27 марта 2012

Согласно моему собственному воспроизведению этой проблемы в brew 0.9 и OSX 10.6.8, проблема в --with-thread-unsafe не учитывается текущим файлом формулы brew. В этом можно убедиться, проверив формулу с помощью brew edit boost и проверив, появляется ли опция в содержании формулы.

Из-за этого строятся libboost_python-mt.a и libboost_python-mt.dylib вместо libboost_python.a и libboost_python.dylib.

Самый простой способ исправить это - отредактировать ваш pgmagick setup.py, чтобы заменить boost_lib="boost_python" на boost_lib="boost_python-mt" (как указано здесь ) или следовать инструкциям и патчу здесь . В остальном это известная проблема.

4 голосов
/ 26 марта 2012

Библиотека boost_python внутри / usr / local / lib / названа в честь libboost_python-mt.a и libboost_python-mt.dylib, так как компиляция по умолчанию включает поддержку многопоточности.

Grep boost_lib = "boost_python" в состоянии ELSE в setup.py и замените его w / boost_lib = "boost_python-mt", исправит проблему "not found".

Также можно использовать версию "-mt" для libboost_python.a: как описано здесь для linux boost, который больше не добавляет суффикс -mt с 1.42.

Игнорируйте эту строку , или вы можете "with-boost-python = boost_python-mt python setup.py install". Возможно, вы могли бы добавить '--with-boost-python = boost_python-mt' к extra_compile_args внутри setup.py, чтобы достичь той же цели.

Кроме того, вы можете установить pgmagick через pip в управляемых envs. Ссылки http://rohanradio.com/blog/2011/12/02/installing-pgmagick-on-os-x/

2 голосов
/ 28 сентября 2014

Обратите внимание, что по состоянию на июль 2014 года улучшенная библиотека Python представляет собой отдельный пакет homebrew под названием boost-python.

5254f8f510fb30484f8fac8be3d38e388a4392e2
Author: Tim D. Smith <git@tim-smith.us>
Date:   Sat Jul 19 15:37:25 2014 -0700

    Split out Boost.Python

. Вам необходимо установить его отдельно, чтобы получить общую библиотеку libboost_python.

0 голосов
/ 12 июня 2013

Я отправил запрос на извлечение на homebrew для сборки Boost с двоичными файлами как mt, так и non mt (с многопоточным и небезопасным потоком), которые необходимы для сборки pgmagick.

Оказывается, это довольно распространенная проблема, пока патч не будет принят, вы можете проверить или использовать мою формулу Boost для сборки pgmagick.

0 голосов
/ 23 марта 2012

Помогает ли настройка DYLD_FALLBACK_LIBRARY_PATH=/usr/local/lib в среде перед сборкой

* 1004 например *

$ export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/lib
$ hg clone https://bitbucket.org/hhatto/pgmagick/src
$ cd pgmagick
$ python setup.py build
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...