如何在 osx 上安装 pycairo?
我正在尝试安装 pycairo (开罗图形库)在 OSX 下。
我开始
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 ;制作 ; sudo make install
工作只是找到 对于开罗,./configure 似乎有效,但 make 失败:
In file included from cairo-analysis-surface.c:37:
cairoint.h:71:20: error: pixman.h: No such file or directory
我做错了什么?
为什么我必须费尽心思才能让软件库在“正常运行”的操作系统上运行?为什么 darwin 不像 Linux 呢?
I am trying to install the pycairo (Python bindings for the cairo graphics library) under OSX.
I started with
easy_install pycairo
and got:
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
So I went to cairo's site and downloaded the latest package (1.8.8) of cairo, and also the latest package of something called pixman (both source packages -- couldn't find osx binaries)
unzipped both, each in own directory.
for pixman, the regular ./configure ; make ; sudo make install
worked just find
for cairo, ./configure seemed to work, but make failed with:
In file included from cairo-analysis-surface.c:37:
cairoint.h:71:20: error: pixman.h: No such file or directory
What am I doing wrong?
And why do I have to struggle so much to get a software library to work on an os that "just works"? Why isn't darwin more like linux?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如果您已经有 Homebrew,这两个命令应该会有所帮助:
对于非 Homebrew 安装的 Python,设置 PYTHONPATH 来查找 pycairo。您可以将 .bashrc/.profile/.whatever 中的 PYTHONPATH 设置为以下内容:
我个人不需要使用最后一部分,但它可能会对您有所帮助。
If you already have homebrew, these two commands should be helpful:
For a non-Homebrew installed Python, set the PYTHONPATH to find pycairo. You can set your PYTHONPATH in your .bashrc/.profile/.whatever to the following:
I personally didn't need to use this last part but it might help you.
看来您在这里混合了各种安装选项。 MacPorts 包系统
port install
命令应该自动提取特定包所需的所有依赖项,因此技巧是从正确的顶级项目开始。对于 python 包,MacPorts 目前有一个通用约定:以 py- 开头的包适用于 python 2.4,以 py25- 开头的包适用于 2.5,以 py26- 开头的包适用于 python 2.4。 2.6 的。目前,MacPorts 中提供了py-cairo
、py25-cairo
和py26-cairo
软件包。通过选择 py-cairo ,您选择了 python2.4 版本,您可能会发现 MacPorts 为您构建并安装了 python2.4(链接在
/opt/local/bin/python2 .4
),如果您启动它,您可能会发现可以在那里导入 cairo。现在可能可以满足您的需求,但Python 2.4已经很旧并且不再受支持,因此,如果您刚刚开始,最好从Python 2.6开始,它是当前的两个版本之一Python 的。为此,您需要做的是:这应该引入任何缺少的依赖项,主要是 MacPorts python2.6,您可以从
/opt/local/bin/python2.6
运行它。您可能需要更改 shell 启动脚本(可能是 .bash_profile)中的$PATH
,以便将/opt/local/bin
放在搜索路径的早期位置。因为安装 Cairo 及其 python 绑定似乎相当复杂,所以坚持使用完整的 MacPorts 解决方案应该更容易、更好。这确实意味着您不必要地(且无害地)安装了一些您不需要的 Python 实例。但如果您确实想清理一下,您可以轻松删除 MacPorts python24:
完全删除 python.org 安装的 python 更为复杂。我已经在此处解释了该过程。但只要你保持路径笔直,就没有迫切需要删除其中任何一个。
It appears you are mixing various install options here. The MacPorts package system
port install
command should automatically pull in all the dependencies needed for a particular package so the trick is to start with the right top-level project. For python packages, MacPorts has a general convention currently: packages that start withpy-
are for python 2.4, those withpy25-
are for 2.5, andpy26-
for 2.6. There are currentlypy-cairo
,py25-cairo
, andpy26-cairo
packages available in MacPorts.By choosing
py-cairo
you picked the python2.4 version and you'll probably find that MacPorts built and installed a python2.4 for you (linked at/opt/local/bin/python2.4
) and, if you launch it, you'll probably find that you can import cairo there. Now that may be OK for your needs but Python 2.4 is quite old and no longer supported so, if you're just starting, it might be better to start with Python 2.6, one of the two current versions of Python. To do so, all you should need to do is:That should bring in any missing dependencies, mainly the MacPorts python2.6, which you can run from
/opt/local/bin/python2.6
. You may want to change your$PATH
in your shell startup script, probably .bash_profile, to put/opt/local/bin
early on the search path.Because installing Cairo and its python bindings seems to be fairly complex, it should be easier and better to stick to using a complete MacPorts solution for this. That does mean you've needlessly (and harmlessly) installed a couple of Python instances that you won't need. But if you do want to clean things up a bit, you can easily remove the MacPorts python24 with:
Completely removing the python.org installed python is more complicated. I've explained the process here. But there's no pressing need to remove either as long as you keep your paths straight.
好的。我解决了。将解决方案放在这里以供将来参考,它可能会对某人有所帮助。
基本上,整个 ports/fink 系统有点混乱,而且 osx 并不能很好地与 linux-y 世界兼容。
因此,我在 OSX 上安装 pycairo 所需的步骤是:
提取所有内容。然后:
希望能返回几个位置。选择最有可能的一个(开罗最新的一个)。对我来说它是“/opt/local/lib/pkgconfig/cairo.pc”并执行以下操作:
在此之后,仍然在 PYCAIRO_DIR 中,执行:
这应该可以做到...
Ok. I solved it. Putting solution here for future reference, it might help someone.
Basically, the whole ports/fink system is a bit messed up, and osx doesn't really play nice with the linux-y world.
So, the steps I needed to install pycairo on OSX were:
extract everything. Then:
hopefully, several locations are returned. choose the most likely one (one with newest cairo). For me it was "/opt/local/lib/pkgconfig/cairo.pc" and do:
after this, still in PYCAIRO_DIR, do:
This should do it...
port
命令安装 darwinports python 安装的库,这与框架构建不同(因此步骤 2 和 3 不应该起作用)。尝试使用sudo easy_install pycairo
(尽管您的步骤 4 应该与此相同)。还要查看
which python
,以检查您实际上正在运行您认为的 python。The
port
command installs the library for the darwinports python installation, which is different to the framework build (so steps 2 and 3 shouldn't work). Trysudo easy_install pycairo
instead (although your step 4 should be equivalent to this).Look at
which python
too, to check that you are in fact running the python you think you are.在 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
文件是您的朋友,因为它包含避免潜在版本冲突的正确说明。您基本上需要指定正确的前缀,以便将包安装在正确的文件夹中。使用
python2.5
和python
运行这些说明,您将能够正确安装两个版本的 pycairo(或通过 MacPorts / Fink 安装的任何版本)。On Mac OS you can have multiple Python versions installed. You can have even more if you decide to install Python via Fink or MacPorts. When you compile libraries from the source, you should make sure they point to the correct installation.
I currently have Python 2.5.1 and Python 2.6.4 installed on my machine, which I can call via
python2.5
andpython
respectively. They live in two different folders:/System/Library/Frameworks/Python.framework/Versions/2.5
and/Library/Frameworks/Python.framework/Versions/2.6
I was running into a similar problem when compiling pycairo 1.8.8 from the tarball. The
INSTALL
file in this case is your friend, as it contains the correct instructions to avoid potential version conflicts. You basically need to specify the correct prefix so that the package will be installed in the correct folder.Running these instructions with
python2.5
andpython
you will be able to correctly install pycairo for both versions (or for any version installed via MacPorts / Fink).第 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
Step 1: Run this from terminal
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
Step 2:
brew install cairo
Step 3:
pip install pycairo