13

我正在尝试在 OSX 下安装pycairocairo 图形库的 Python 绑定)。

我从

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

我究竟做错了什么?

为什么我必须如此努力才能让软件库在“正常工作”的操作系统上工作?为什么达尔文不像linux?

4

6 回答 6

12

如果您已经有自制软件,这两个命令应该会有所帮助:

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

对于非 Homebrew 安装的 Python,设置 PYTHONPATH 以查找 pycairo。您可以在 .bashrc/.profile/.whatever 中将 PYTHONPATH 设置为以下内容:

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

我个人不需要使用最后一部分,但它可能会对您有所帮助。

于 2015-05-06T23:02:42.103 回答
7

看来您在这里混合了各种安装选项。MacPorts 包系统port install命令应该自动引入特定包所需的所有依赖项,因此诀窍是从正确的顶级项目开始。对于 python 包,MacPorts 目前有一个通用约定:以 开头的包py-用于 python 2.4,以py25-are 开头的包用于 2.5 和py26-2.6。目前 MacPorts 中有py-cairopy25-cairopy26-cairo包可用。

通过选择py-cairo你选择了 python2.4 版本,你可能会发现 MacPorts 为你构建并安装了一个 python2.4(链接在/opt/local/bin/python2.4),如果你启动它,你可能会发现你可以在那里导入 cairo。现在这可能满足您的需求,但 Python 2.4 已经很旧并且不再受支持,因此,如果您刚刚开始,最好从 Python 的两个当前版本之一的 Python 2.6 开始。为此,您需要做的就是:

sudo port install py26-cairo

这应该会带来任何缺失的依赖项,主要是 MacPorts python2.6,您可以从/opt/local/bin/python2.6. 您可能希望更改您$PATH的 shell 启动脚本,可能是 .bash_profile,以便/opt/local/bin尽早放在搜索路径上。

因为安装 Cairo 及其 python 绑定似乎相当复杂,所以坚持使用完整的 MacPorts 解决方案应该更容易更好。这确实意味着您不必要地(并且无害地)安装了几个您不需要的 Python 实例。但是,如果您确实想稍微清理一下,可以使用以下命令轻松删除 MacPorts python24:

sudo port uninstall py-cairo python24

完全删除 python.org 安装的 python 比较复杂。我已经解释了这里的过程。但是,只要您保持路径笔直,就没有迫切需要删除任何一个。

于 2009-11-28T07:26:38.210 回答
7

好的。我解决了。将解决方案放在这里以供将来参考,它可能会对某人有所帮助。

基本上,整个ports/fink 系统有点混乱,而且osx 在linux-y 世界中并不能很好地发挥作用。

因此,我在 OSX 上安装 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 
    

    希望有几个位置可以返回。选择最有可能的一个(开罗最新的一个)。对我来说,它是“/opt/local/lib/pkgconfig/cairo.pc”并执行以下操作:

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

    在此之后,仍在 PYCAIRO_DIR 中,执行以下操作:

    python setup.py install
    

这个应该做...

于 2009-09-30T22:29:17.017 回答
3

port命令为 darwinports python 安装安装库,这与框架构建不同(因此步骤 2 和 3 不应该工作)。尝试sudo easy_install pycairo改用(尽管您的第 4 步应该与此等效)。

也看一下which python,以检查您是否确实在运行您认为的 python。

于 2009-11-28T06:52:25.143 回答
2

在 Mac OS 上,您可以安装多个 Python 版本。如果你决定通过 Fink 或 MacPorts 安装 Python,你可以拥有更多。从源代码编译库时,应确保它们指向正确的安装。

我目前在我的机器上安装了 Python 2.5.1 和 Python 2.6.4,我可以分别通过python2.5和调用它们python。他们住在两个不同的文件夹中: /System/Library/Frameworks/Python.framework/Versions/2.5/Library/Frameworks/Python.framework/Versions/2.6

从 tarball 编译 pycairo 1.8.8 时,我遇到了类似的问题。在这种情况下,该INSTALL文件是您的朋友,因为它包含正确的说明以避免潜在的版本冲突。您基本上需要指定正确的前缀,以便将包安装在正确的文件夹中。

$ python -c "导入系统;打印系统前缀"
  # 记下python前缀
$ ./configure --prefix=[python_prefix]
$ 制作
$ make install # 可能需要超级用户权限

运行这些指令,python2.5python将能够为两个版本(或通过 MacPorts / Fink 安装的任何版本)正确安装 pycairo。

于 2010-01-11T21:22:21.243 回答
1

第 1 步:从终端运行它ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

第2步: brew install cairo

第 3 步: pip install pycairo

于 2019-11-22T13:58:57.993 回答