Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在osx上安装pycairo?_Python_Macos_Installation_Makefile_Cairo - Fatal编程技术网

Python 如何在osx上安装pycairo?

Python 如何在osx上安装pycairo?,python,macos,installation,makefile,cairo,Python,Macos,Installation,Makefile,Cairo,我正在尝试在OSX下安装(的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二进制文

我正在尝试在OSX下安装(的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;制作sudo make安装
工作正常,只需查找 对于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?

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

基本上,整个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”,并执行以下操作:

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

    python setup.py install
    

这应该可以做到…

命令为darwinports python安装安装库,这与框架构建不同(因此步骤2和3不应该工作)。尝试
sudoeasy\u安装pycairo
(尽管步骤4应该与此等效)


查看
哪种python
,检查您是否正在运行您认为是的python。

您似乎在混合各种安装选项。MacPorts package system
port install
命令应该自动拉入特定包所需的所有依赖项,因此技巧是从正确的顶级项目开始。对于python包,MacPorts目前有一个通用约定:以
py-
开头的包适用于python 2.4,以
py25-
开头的包适用于2.5,以
py26-
开头的包适用于2.6。MacPorts中目前有
py cairo
py25 cairo
py26 cairo
软件包

通过选择py cairo您选择了python2.4版本,您可能会发现MacPorts为您构建并安装了一个python2.4(链接在
/opt/local/bin/python2.4
),如果您启动它,您可能会发现您可以在那里导入cairo。现在这对您的需求来说还可以,但是Python2.4已经很老了,不再受支持,因此,如果您刚刚开始,那么最好从Python2.6开始,Python2.6是当前两个Python版本之一。为此,您只需执行以下操作:

sudo port install py26-cairo
这将带来任何缺少的依赖项,主要是MacPorts python2.6,您可以从
/opt/local/bin/python2.6
运行它。您可能需要更改shell启动脚本中的
$PATH
,可能是.bash_profile,以便将
/opt/local/bin
放在搜索路径的早期

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

sudo port uninstall py-cairo python24

完全删除python.org安装的python更为复杂。我已经解释了这个过程。但是,只要保持路径笔直,就没有迫切需要删除这两个版本。

在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编译pycairo1.8.8时,我遇到了类似的问题。本例中的
安装
文件是您的朋友,因为它包含正确的说明以避免潜在的版本冲突。您基本上需要指定正确的前缀,以便将包安装到正确的文件夹中

$ python -c "import sys; print sys.prefix" # make a note of the python prefix $ ./configure --prefix=[python_prefix] $ make $ make install # may require superuser access $python-c“导入系统;打印系统前缀” #记下python前缀 $./configure--prefix=[python\u prefix] $make $make install#可能需要超级用户访问
使用
python2.5
python
运行这些说明,您将能够为这两个版本(或通过MacPorts/Fink安装的任何版本)正确安装pycairo。

如果您已经拥有自制软件,这两个命令将非常有用:

$ brew install cairo --use-clang 
$ brew install py2cairo
对于非自制安装的Python,将PYTHONPATH设置为查找pycairo。您可以在.bashrc/.profile/中将PYTHONPATH设置为以下值:

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

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

第1步:从terminal
ruby-e“$(curl-fsSL)运行此部分https://raw.githubusercontent.com/Homebrew/install/master/install)“/dev/null

步骤2:
brew安装cairo


步骤3:
pip安装pycairo

更新:我将所有.h文件从pixman目录复制到cairo目录。一个丑陋的蛮力的东西,但它似乎起作用:“制造;sudo-make-install似乎工作正常。不过,在尝试安装pycairo时,我仍然得到“Requested'cairo>=1.8.8”,但cairo的版本是1.0.4。它认为我有cairo1.0.4,而忽略了新的
PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH.