如何在OSX上安装pycairo?

13 投票
6 回答
20708 浏览
提问于 2025-04-15 14:42

我正在尝试在OSX上安装pycairo(这是一个Python库,用来使用cairo图形库)。

我开始时执行了:

easy_install pycairo

然后得到了:

Requested 'cairo >= 1.8.8' but version of cairo is 1.0.4

error: Setup script exited with Error: cairo >= 1.8.8 not found

于是我去cairo的网站下载了最新的cairo包(1.8.8),还下载了一个叫做pixman的最新包(这两个都是源代码包——我找不到适合OSX的二进制文件)。

我把这两个包解压了,每个放在自己的文件夹里。对于pixman,正常的命令./configure ; make ; sudo make install都能顺利执行。对于cairo,./configure似乎也没问题,但执行make时却失败了,出现了:

In file included from cairo-analysis-surface.c:37:
cairoint.h:71:20: error: pixman.h: No such file or directory

我哪里出错了?

为什么我在一个“好用”的操作系统上安装一个软件库会这么麻烦?为什么darwin(OSX的内核)不能像linux那样简单?

6 个回答

7

看起来你在这里混用了不同的安装选项。MacPorts的包管理系统中的 port install 命令会自动拉取一个特定包所需的所有依赖项,所以关键是要从正确的顶层项目开始。对于Python包,MacPorts现在有一个通用的命名规则:以 py- 开头的包是针对Python 2.4的,以 py25- 开头的是针对2.5的,以 py26- 开头的是针对2.6的。目前在MacPorts中有 py-cairopy25-cairopy26-cairo 这些包。

选择 py-cairo 意味着你选择了Python 2.4版本,你可能会发现MacPorts为你构建并安装了一个Python 2.4(链接在 /opt/local/bin/python2.4),如果你启动它,你可能会发现可以在里面导入cairo。现在,这可能对你来说是可以的,但Python 2.4已经很旧了,并且不再受支持,所以如果你刚开始学习,可能更好从Python 2.6开始,这是当前的两个Python版本之一。要做到这一点,你只需要:

sudo port install py26-cairo

这样应该会安装任何缺失的依赖项,主要是MacPorts的Python 2.6,你可以从 /opt/local/bin/python2.6 运行它。你可能想在你的shell启动脚本中更改你的 $PATH,可能是.bash_profile,以便将 /opt/local/bin 放在搜索路径的前面。

因为安装Cairo及其Python绑定似乎相当复杂,所以最好还是使用完整的MacPorts解决方案。这样一来,你可能不必要(而且无害地)安装了一些你不需要的Python实例。但如果你想稍微清理一下,可以很容易地用以下命令删除MacPorts的Python 2.4:

sudo port uninstall py-cairo python24

完全删除python.org安装的Python会更复杂。我在这里解释了这个过程。但只要你保持路径正确,其实没有必要删除它们。

7

好的,我解决了这个问题。把解决办法放在这里,未来可能会帮助到其他人。

基本上,整个 ports/fink 系统有点混乱,macOS 和 Linux 的兼容性不是很好。

所以,我在 macOS 上安装 pycairo 的步骤是:

  • 下载最新版本的 pixman、cairo 和 pycairo 的源代码
  • 解压所有文件。然后:

    cd PIXMAN_DIR ; ./configure ; make ; sudo make install 
    cd CAIRO_DIR ; cp PIXMAN_DIR/pixman/*.h . ; ./configure ; make ; sudo make install
    cd PYCAYRO_DIR; locate cairo.pc 
    

    希望能返回几个位置。选择最有可能的一个(也就是最新的 cairo)。对我来说是 "/opt/local/lib/pkgconfig/cairo.pc",然后执行:

    export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/
    

    在这个步骤后,仍然在 PYCAIRO_DIR 目录下,执行:

    python setup.py install
    

这样就可以了……

14

如果你已经安装了Homebrew,这两个命令可能会对你有帮助:

$ brew install cairo --use-clang 
$ brew install py2cairo

如果你的Python不是通过Homebrew安装的,你需要设置PYTHONPATH来找到pycairo。你可以在你的.bashrc/.profile/.whatever文件中把PYTHONPATH设置成下面这个:

PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH.

我个人没有用到最后这部分,但这可能对你有帮助。

撰写回答