如何在OS X上的pythonbrew下构建pgmagick?

时间:2012-03-20 12:12:52

标签: python macos pythonbrew

尝试使用XCode 4.3.1在OS X Lion上构建pgmagick时,我没有取得多大成功。

我使用以下命令(通过自制程序)安装了ImageMagick和GraphicsMagick,以及旁边的提升:

$ 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

根据stdout上的输出,setup 在适当位置寻找提升(/usr/local/lib)。

我也尝试了easy_installpip,但没有运气。我正在使用Pythonbrew,但也禁用了它并尝试使用股票python安装 - 仍然没有成功。

有关如何解决问题或进一步诊断问题的任何建议?

5 个答案:

答案 0 :(得分:8)

根据我在brew 0.9和OSX 10.6.8中对此问题的再现,问题是--with-thread-unsafe没有被当前的brew公式文件所尊重。您可以通过使用brew edit boost检查公式并查看该选项是否出现在公式的内容中来验证这一点。

因此,libboost_python-mt.alibboost_python-mt.dylib正在构建,而不是libboost_python.alibboost_python.dylib

解决此问题的最简单方法是编辑您的pgmagick setup.py,将boost_lib="boost_python"替换为boost_lib="boost_python-mt"(如指出here)或关注the instructions and patch here。这是一个已知问题。

答案 1 :(得分:4)

/ usr / local / lib /中的boost_python lib以libboost_python-mt.a和libboost_python-mt.dylib命名,因为默认编译是支持启用的多线程。

在setup.py中的ELSE条件下grep boost_lib =“boost_python”并将其替换为w / boost_lib =“boost_python-mt”,将修复“未找到”问题。

也可以将“-mt”版本发送到libboost_python.a:如针对linux boost所述here,从1.42开始不再附加'-mt'后缀。

忽略此行或者你可以“with-boost-python = boost_python-mt python setup.py install”。 您可以将'--with-boost-python = boost_python-mt'附加到setup.py中的extra_compile_args,以实现相同的目标。

此外,您可以通过管理环境中的pip安装pgmagick。参考http://rohanradio.com/blog/2011/12/02/installing-pgmagick-on-os-x/

答案 2 :(得分:2)

请注意,截至2014年7月,boost Python库是一个名为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共享库。

答案 3 :(得分:0)

在构建

之前,环境中的DYLD_FALLBACK_LIBRARY_PATH=/usr/local/lib设置是否有帮助

e.g

$ export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/lib
$ hg clone https://bitbucket.org/hhatto/pgmagick/src
$ cd pgmagick
$ python setup.py build

答案 4 :(得分:0)

我已经submitted a pull request自制了用于构建pgmagick所需的mt和非mt(线程和线程不安全)二进制文件来构建Boost。

原来这是一个相当普遍的问题,在补丁被接受之前,你可以查看或使用我的Boost公式来构建pgmagick。