如何在OSX上安装pycairo?
我正在尝试在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 个回答
看起来你在这里混用了不同的安装选项。MacPorts的包管理系统中的 port install
命令会自动拉取一个特定包所需的所有依赖项,所以关键是要从正确的顶层项目开始。对于Python包,MacPorts现在有一个通用的命名规则:以 py-
开头的包是针对Python 2.4的,以 py25-
开头的是针对2.5的,以 py26-
开头的是针对2.6的。目前在MacPorts中有 py-cairo
、py25-cairo
和 py26-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会更复杂。我在这里解释了这个过程。但只要你保持路径正确,其实没有必要删除它们。
好的,我解决了这个问题。把解决办法放在这里,未来可能会帮助到其他人。
基本上,整个 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
这样就可以了……
如果你已经安装了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.
我个人没有用到最后这部分,但这可能对你有帮助。