如何在Mac OSX上使用默认Python安装PyCairo 1.10

16 投票
3 回答
9304 浏览
提问于 2025-04-16 22:35

有没有人用新的waf构建工具在Mac上安装pycairo 1.10?它在安装时出错,说找不到Python的头文件。

3 个回答

3

安卓的步骤几乎可以完成。你需要在第5步中使用(来自llimllib):

export ARCHFLAGS='-arch x86_64'

然后运行 python waf install 就能成功了。

12

对于任何回来看这个的人,我在OSX Lion上安装py2cairo时,采用了一种稍微不同的方法,参考了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
13

我觉得waf在Mac OS X上真的有点问题 :(

这是我遇到的情况。在运行python waf configure时,它找不到Python.h,我查看了位于build_directoryconfig.log文件,发现失败的真正原因是架构不兼容。waf脚本试图用i386架构构建一个简单的源文件,而我的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架构构建的。在执行下面的步骤之前,请确保你的Python也是这个架构。

brew是指homebrew。你必须使用它,而不是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,找到configure函数中的env = ctx.env这一行,然后在下面添加以下一行:

    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/

    重要提示:后面的路径只有在你通过homebrew安装cairo时才有效

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

    python waf configure

    python waf build

    python waf install

这样应该就可以了。如果不行,我觉得最好在pycairo的邮件列表上提问(如果有的话)。

撰写回答