【问题标题】:Install pycairo in virtualenv在 virtualenv 中安装 pycairo
【发布时间】:2012-07-14 12:44:35
【问题描述】:

我尝试在 virtualenv 中安装 pycairo 以在 Django 项目中使用。我运行了pip install pycairo==1.10.0 命令,该命令可以找到包并下载它,这与pip install pycairo 等其他命令不同,但是在开始安装包时会引发错误。

这是日志:

Downloading/unpacking pycairo==1.10.0
  Running setup.py egg_info for package pycairo
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
    IOError: [Errno 2] No such file or directory:
'/home/radu/Desktop/djangos/workout/venv/build/pycairo/setup.py'
Complete output from command python setup.py egg_info:
Traceback (most recent call last):

File "<string>", line 14, in <module>

IOError: [Errno 2] No such file or directory:
'/home/radu/Desktop/djangos/workout/venv/build/pycairo/setup.py'

----------------------------------------
Command python setup.py egg_info failed with error code 1 in 
/home/radu/Desktop/djangos/workout/venv/build/pycairo
Storing complete log in /home/radu/.pip/pip.log

你能给我一些关于做什么的提示吗?我应该尝试为包编写一个 setup.py 文件,然后尝试安装它吗? (我不确定这是否是一个解决方案,我仍在努力弄清楚我能做什么)。

提前致谢!

【问题讨论】:

标签: python installation virtualenv pycairo


【解决方案1】:

大家好!

我刚刚发布了 cairocffi: http://packages.python.org/cairocffi/

它是 pycairo 的替代品,它通过 pip 在 vi​​rtualenv 中安装,在 Python 2 和 3 以及 PyPy 上运行。

pip install cairocffi

在您的代码中:

import cairocffi as cairo
# Enjoy the same API as Pycairo.

欢迎反馈。 (虽然issue tracker 可能是比这里更好的渠道。)

【讨论】:

  • 这是最优秀的,而且似乎比 pycairo 有更好的文档记录。
  • 这安装得很好,但对我来说完全错误。抱歉,没有时间隔离问题并提交错误报告,但想将其留给其他人。
  • @Vebjorn Ljosa,非常感谢您提供带有示例代码和预期/实际结果的错误报告,即使您没有隔离问题。现在我不知道如何提供帮助:/
  • @SimonSapin,是的,我理解并道歉。而且,为了记录,我完全有可能做一些不合规格的事情。我希望我有时间隔离一个测试用例。
  • 有效!经过与 cairo 的大量斗争,这被证明是让它工作的最简单的解决方案。只要确保你安装了 libffi-dev ($ sudo apt-get install libffi-dev)
【解决方案2】:

尽管使用 pip 无法很好地安装 py2cairo,但您仍然可以使用分发包中 INSTALL 文件中的构建说明将 py2cairo 安装到虚拟环境中。

您需要为您的操作系统安装 cairo-dev/cairo-devel 软件包才能构建软件包。

执行以下操作以安装到您的虚拟环境中:

  1. 下载、解压并cd到py2cairo目录
  2. 激活您的虚拟环境
  3. 遵循标准构建过程

./waf configure --prefix=$VIRTUAL_ENV

./waf build

./waf install

【讨论】:

  • 这对我有用,但我必须先执行以下操作:“export PYTHON=$VIRTUAL_ENV/bin/python”。无论出于何种原因,进入 virtualenv 并不会设置全局 $PYTHON 变量。
  • 收到此错误:Checking for 'cairo' &gt;= 1.10.2 : not found. The configuration failed Installed cairo: 1.12.16_1 via brew。
  • 在配置步骤中,我在Checking for program python2.7-config 之后立即收到错误command ['/path/to/venv/bin/python', '/usr/bin/python2.7-config', '--includes'] returned 1。有谁知道如何解决这个问题?
  • @MicheleGargiulo 我发现让这个工作的唯一方法是使用 git dev 分支 git clone git://git.cairographics.org/git/py2cairo 并使用 autogen.sh --prefix=/path/to/venv;make; make install 脚本安装。似乎waf pycairo 使用的版本已经过时,并且仍然认为python2.7-config 是python 脚本而不是bash;甚至补丁对我也没有帮助。
  • @fpghost 让它在 Ubuntu 14.10、Python 2.7.8 上的 virtualenv 上与 autogen.sh 一起工作
【解决方案3】:

pycairo 目前不支持通过 pip/distutils 安装。该项目的 install docs 指示使用 waf 或 autotools。

要在 virtualenv 中使用 pycairo,您需要:

  • 在系统范围内安装 pycairo,最好通过您的发行版的软件包安装
  • 然后,要么:
    1. 使用--system-site-packages 选项创建一个virtualenv 或删除lib/pythonX.Y/no-global-site-packages.txt 文件。
    2. 或将符号链接添加到cairo 包(包含_cairo.so 的目录)。像这样的东西: ln -s /usr/lib/python2.7/site-packages/cairo ./venv/lib/python2.7/site-packages

当然 1. 有一个缺点,即您不会从 virtualenv 与系统范围内安装的其他软件包的隔离中受益。

【讨论】:

  • git version of pycairo(适用于 Python 3)最近得到了一个 setup.py 并且可以使用 pip 完美安装。希望下一个版本能够解决所有这些问题(在 Python 2 的 py2cairo 中也是如此。)
【解决方案4】:

对于任何尝试将 pycairo(适用于 Python 2.7)与 Homebrew 和 virtualenv --no-site-packages 结合使用的人...这对我有用:

  1. brew install py2cairo

  2. 然后,找到 Homebrew 的安装路径,如下所示:

    ls -l /usr/local/lib/python2.7/site-packages/cairo/
    total 24
    lrwxr-xr-x  1 anentropic  admin   80 10 Jun 14:26 __init__.py -> ../../../../Cellar/py2cairo/1.10.0/lib/python2.7/site-packages/cairo/__init__.py
    lrwxr-xr-x  1 anentropic  admin   78 10 Jun 14:26 _cairo.so -> ../../../../Cellar/py2cairo/1.10.0/lib/python2.7/site-packages/cairo/_cairo.so
    
  3. 您想在这些符号链接的基础上找到路径,例如:
    /usr/local/Cellar/py2cairo/1.10.0/lib/python2.7/site-packages

  4. 然后在您的 virtualenv 站点包中创建一个 .pth 文件:
    echo "/usr/local/Cellar/py2cairo/1.10.0/lib/python2.7/site-packages" &gt; venv/lib/python2.7/site-packages/cairo.pth

(可能想停用并重新激活您的 virtualenv 以求好运,不确定)

【讨论】:

  • 在 OS X Mavericks 上测试。很有魅力。还解决了 Graphite 的“ImportError: Could not find Cairo”问题。
  • 在 OS X 10.8 上,安装并尝试导入 cairo 后,它给了我致命的 Python 错误:PyThreadState_Get: no current thread Abort trap: 6
【解决方案5】:

如果在virtualenv 中安装cairocffi 不起作用并且python-dev libffi-dev 不可用(ArchLinux)设置环境变量PKG_CONFIG_PATH=/usr/lib/libffi-3.2.1/include 起作用。

【讨论】:

    【解决方案6】:

    如果您使用 Homebrew,您可以安装 pycairo (Python 3+) 和 py2cairo (Python 2.6-2.7) 配方:

    brew install pycairo

    【讨论】:

    • 问题被问到如何在 Virtualenv 中安装 pycario,答案没有解决。
    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 2012-11-25
    • 2010-12-02
    • 2016-07-13
    • 2016-03-19
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多