16

有没有人使用新的 waf 构建在 mac 上安装了 pycairo 1.10?它失败了找不到python标头。

4

3 回答 3

13

我认为 waf 严重损坏了 Mac OS X :(

这是它对我的工作方式。在python waf configure找不到 Python.h 之后,我查看了位于build_directory中的config.log文件,发现失败的真正原因是架构不兼容。waf 脚本尝试使用 i386 架构构建一个简单的源文件,其中包含 CPython 调用。它没有这样做,因为我的 python 是为 x86_64 架构构建的。

我想,您可以将 python 重建为通用二进制文件,我还没有尝试过。但是,可以使用 x86_64 架构构建 pycairo。就是这样。


我的设置:

$ 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. 获取 python 2.x 的 pycairo 源代码(如果你得到一个快照,它被命名为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

  6. 然后运行 ​​pycairo 的 INSTALL 文件中描述的 waf 命令:

    python waf configure

    python waf build

    python waf install

这应该这样做。如果它对你不起作用,我认为最好在 pycairo 邮件列表(如果有的话)上提出这个话题。

于 2011-08-27T16:43:22.843 回答
12

对于任何回到这个问题的人,我可以根据 llimllib 的链接,使用稍微不同的方法在 OSX Lion 上安装 py2cairo。希望这可以帮助:

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
于 2012-03-19T01:58:36.030 回答
3

android的步骤几乎可以工作。需要使用(来自 llimllib):

export ARCHFLAGS='-arch x86_64'

在第5步,然后python waf install可以成功。

于 2011-12-21T15:55:56.810 回答