【问题标题】:How do I use Homebrew to install Python libraries like Py2Cairo如何使用 Homebrew 安装 Python 库,如 Py2Cairo
【发布时间】:2012-05-06 16:35:17
【问题描述】:

这是我到目前为止所做的:

我已经安装了 Homebrew:

/usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"

然后是python:brew install python

然后是py2cairo:brew install py2cairo

这两个似乎都安装正确,当我输入which python 时,我得到:usr/local/bin/python,我相信这是自制的版本。

我已经按照许多 Homebrew 指南的建议编辑了我的路径:

export PATH=/usr/local/bin:/usr/local/share/python:$PATH

这是我从echo $PATH 得到的信息:/usr/local/bin:/usr/local/share/python:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

我也可以输入python --version 并得到python 2.7.3,这似乎是正确的,因为如果我查看/usr/local/Cellar/py2cairo/1.10.0/README,它会说:

Dependencies
------------
    cairo   >= 1.10.0
    Python  >= 2.6 

然而,在这一切之后,我仍然无法将 py2cairo 库导入 python。这是我尝试时得到的结果:

Sal:~ Lockyer$ python
Python 2.7.3 (default, May  6 2012, 13:47:31) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cairo
Fatal Python error: Interpreter not initialized (version mismatch?)
Abort trap: 6

我认为大多数人使用pipeasy_install 来处理这类事情,但我不认为那些支持py2cairo。这是我运行 pip-2.7 install py2cairo 时得到的结果:

Downloading/unpacking py2cairo
  Could not find any downloads that satisfy the requirement py2cairo
No distributions at all found for py2cairo
Storing complete log in /Users/Lockyer/Library/Logs/pip.log

我想我一定只是错过了最后一步,我以某种方式向 python 揭示了从哪里导入库......我忘记在我的路径中添加一些东西吗?

这是我运行ls -l /usr/local/bin/python时得到的结果

lrwxr-xr-x  1 Lockyer  admin  33  6 May 13:48 /usr/local/bin/python -> ../Cellar/python/2.7.3/bin/python

这是我运行 otool -L /usr/local/Cellar/py2cairo/1.10.0/lib/python2.7/site-packages/cairo/_cairo.so 时得到的结果:

/usr/local/Cellar/py2cairo/1.10.0/lib/python2.7/site-packages/cairo/_cairo.so:
    /private/tmp/homebrew-py2cairo-1.10.0-BtmY/py2cairo-1.10.0/build_directory/src/_cairo.so (compatibility version 0.0.0, current version 0.0.0)
    /usr/local/Cellar/cairo/1.10.2/lib/libcairo.2.dylib (compatibility version 11003.0.0, current version 11003.2.0)
    /System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.1)
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1094.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)

/System/Library/Frameworks/Python.framework/Versions 移动到我的桌面,然后再次运行brew install py2cairo 似乎已经修复了错误。很高兴知道它为什么要针对 Lion 的 python 构建,因为它似乎不是第一个在路径上...

【问题讨论】:

  • 如果你以前安装过python,它可能仍然是那个。发布 ls -l /usr/local/bin/python 的结果
  • 我已经用我的结果编辑了这个问题,看起来像您对我的期望?但我可能会遗漏一些东西......
  • 是的,看起来不错。我认为@Dougal 可能解决了您的问题,这表明 cairo 本身可能没有正确构建。您缺少底层 C 扩展
  • 我认为您应该提供问题的最后一段作为正确答案,而不是下面的。我已经在这个线程上尝试了所有方法,唯一有效的是你的解决方法。在GitHub 上也有一些关于这个话题的争论

标签: python homebrew cairo


【解决方案1】:

我偶然发现了同样的错误。通过谷歌搜索,我发现this issue 已经在project on GitHub 的问题页面上检测到。

这似乎是waf 如何处理库导入的问题,我并不完全理解。已提交修复并等待批准。

如果有人在接受修复之前仍然遇到这个问题,可以按照this answer 提出的命令安装 py2cairo 的修复公式。

brew rm -f py2cairo
brew install  https://raw.githubusercontent.com/2bits/homebrew/15b3e67/Library/Formula/py2cairo.rb

修复通过后,一个简单的brew update 应该可以解决问题。

【讨论】:

  • 仅供参考,它已在最新的 Homebrew 中修复。 brew updatebrew rm -f py2cairo && brew install py2cairo 为我工作。感谢所有调查此问题的人。你们都为我省去了几个小时的麻烦。
  • a4e87cd 不见了,试试 brew install h t t p s://github.com/2bits/homebrew/raw/15b3e67/Library/Formula/py2cairo.rb
【解决方案2】:

根据您的其他 cmets,您已设法解决您的库路径问题,但留下“致命的 Python 错误:解释器未初始化(版本不匹配?)”。以下是解决方法。

  1. 确保您拥有 xcode 4.3
  2. 确保您已安装 xcode 命令行工具
  3. brew tap homebrew/dupes && brew install homebrew/dupes/apple-gcc42
  4. sudo ln -s /usr/local/bin/gcc-4.2 /usr/bin/gcc-4.2
  5. 通过brew --config 确认所有这些(应报告已找到 GCC-4.2)
  6. brew uninstall cairo py2cairo
  7. brew install py2cairo --use-gcc

我遇到了同样的问题,直到我用 gcc 构建它,这显然不再包含在 xcode 4.3 中。

另外,我没有使用自制 python 安装(如果你这样做了)。我正在使用标准的苹果 python 安装,在我的 PYTHONPATH 前面只有/usr/local/lib/python2.7/site-packages

【讨论】:

  • 嗯,是的,将/usr/local/lib/python2.7/site-packages 添加到我的PATH 并使用默认的python 安装可能会更好。它可能不如移动库文件那么粗略......不过我最终不需要通过 Homebrew 安装 gcc。
  • @Lockyer:我在每个组合中都遇到了崩溃,直到我最终安装 GCC 并将其链接到正确的位置并且自制软件承认了它,我使用了 --use-gcc 标志
  • @Rodrigo:这不是一个完全完整的错误。它只是失败的命令。你已经安装了 gcc 对吧?
  • @jdi 非常感谢您的反馈,但我已经解决了问题最后一段中提出的问题:在安装 py2cairo 之前将/System/Library/Frameworks/Python.framework/Versions 移动到桌面。正如您可能在下面看到的,我还通过为该项目提出的修复发现了一个更优雅的解决方案。
【解决方案3】:

似乎 pycairo 的 waf 安装程序文件在安装时发现了错误的 python。你能跑吗

otool -L /usr/local/Cellar/py2cairo/1.10.0/lib/python2.7/site-packages/cairo/_cairo.so

确定 C 扩展与哪个 python 链接?我的包括一行像

/System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.1)

(但我用的是系统python,不是自制python)。

【讨论】:

  • 抱歉,我之前尝试过,但失败了。我在写这个问题的时候把它搞砸了。刚刚又试了一次,并用结果编辑了我的问题。
  • 啊哈,不同的问题。尝试在 /usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/cairo//usr/local/Cellar/py2cairo 中查找名为 _cairo.so 的文件,这是 py2cairo 使用的 C 扩展名。发现它可能是路径问题,或者它可能没有正确构建。
  • 有一个_cairo.so/usr/local/Cellar/py2cairo/1.10.0/lib/python2.6/site-packages/cairo,但除了__init__.pyc/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/cairo之外什么都没有
  • 嗯——不知道为什么它在lib/python2.6;当我这样做时,我得到了lib/python2.7。 py2cairo waf 安装程序在安装时似乎选择了错误的 python 版本。一个简单的解决方法可能是(现在您通过 homebrew 拥有依赖项 cairo)只需使用 pip-2.7 安装 py2cairo ...。您也可以尝试 brew uninstall py2cairo; brew install py2cairo 并查看它是否再次发生 - 可能是如果您刚刚安装了 brew/python,则在您之前安装它时会更改环境。
  • 好的,刚刚跑了brew uninstall py2cairobrew install py2cairo。现在在/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/cairo//usr/local/Cellar/py2cairo/1.10.0/lib/python2.7/site-packages/cairo 有一个_cairo.so 文件。但是现在我在尝试导入时遇到不同的错误:>>> import cairo Fatal Python error: Interpreter not initialized (version mismatch?) Abort trap: 6
【解决方案4】:

对我来说,brew rm -f py2cairobrew install py2cairo 也有用

代替

brew rm -f py2cairo

试试

brew install  https://raw.githubusercontent.com/2bits/homebrew/15b3e67/Library/Formula/py2cairo.rb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-27
    • 2021-12-18
    • 2016-05-07
    • 2020-06-03
    • 2011-05-04
    • 2023-03-08
    • 1970-01-01
    • 2012-06-18
    相关资源
    最近更新 更多