在virtualen中安装PyGtk

2024-04-28 15:51:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试图在virtualenv(控制台)中运行一个简单的matplotlib示例。代码如下:

import matplotlib
matplotlib.use('GTKAgg')
import matplotlib.pyplot as plt
radius = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
area = [3.14159, 12.56636, 28.27431, 50.26544, 78.53975, 113.09724]
plt.plot(radius, area)
plt.show()

但是,当我运行这个时,我得到:

ImportError: Gtk* backend requires pygtk to be installed.

现在乐趣开始了。我试图pip install pygtk,但它抛出:

********************************************************************
* Building PyGTK using distutils is only supported on windows. *
* To build PyGTK in a supported way, read the INSTALL file.    *
********************************************************************
Complete output from command python setup.py egg_info:
********************************************************************

我已经检查了INSTALL文件,并说要尝试./configfure; make; make install。然而。我不太确定如何在virtualenv中做到这一点。为了在virtualenv中安装pygtk,我在哪里解包源代码。


Tags: install代码import示例makevirtualenvmatplotlibuse
3条回答

诀窍是手动设置正确的路径,然后在virtualenv中运行configure。这是很基本的,但对我有效。

在虚拟环境中安装python config并将其链接到python2.7-config:

pip install config
ln -s /home/PATH/TO/VIRT/bin/python-config /home/PATH/TO/VIRT/bin/python2.7-config

在虚拟环境中安装cairo:

wget http://cairographics.org/releases/py2cairo-1.10.0.tar.bz2
tar -xf py2cairo-1.10.0.tar.bz2
cd py2cairo-1.10.0
./waf configure --prefix=/home/PATH/TO/VIRT/
./waf build
./waf install

安装PyGTK

wget http://pypi.python.org/packages/source/P/PyGTK/pygtk-2.24.0.tar.bz2
tar -xf pygtk-2.24.0.tar.bz2
cd pygtk-2.24.0
export PKG_CONFIG_PATH=/home/PATH/TO/VIRT/lib/pkgconfig
./configure --prefix=/home/PATH/TO/VIRT/
make 
make install

这应该可以做到。只需将PATH/TO/VIRT/替换为您自己的路径。我确信有人可以帮助添加到virtualenvwrapper的路径?

我做到了

sudo apt-get install python-gtk2

我发现它已经安装了一个调查,我发现当我创建一个虚拟环境时,它丢失了一些链接,所以我看到了这篇文章: Virtualenv on Ubuntu with no site-packages

我阅读了它,并按如下方式定制了提供给我的设置的命令:

  1. 首先我换成了我的virtualenv并通过

    source bin/activate
    
  2. 然后我切换到virtualenv中的lib/python2.7文件夹:

    cd lib/python2.7
    
  3. 然后我执行以下命令。

    $ ln -s /usr/lib/python2.7/dist-packages/cairo/
    $ ln -s /usr/lib/python2.7/dist-packages/pygtk.py
    $ ln -s /usr/lib/python2.7/dist-packages/pygtk.pth
    $ ln -s /usr/lib/python2.7/dist-packages/gtk-2.0/
    
  4. 最后,要检查我键入的“python”,并执行:

    >>> import pygtk
    

    它没有给我任何错误,因此我知道它现在可以在我的虚拟环境中使用。

我在英特尔酷睿i5上使用Ubuntu 14.04(64位)。

pygtk无法从PyPI安装到您的virtualenv中,因此

pip install pygtk

将下载但不安装。您可以下载tar文件并编译和安装这些文件,但如果可以链接到系统中安装的相关软件包,那么激活virtualenv并安装^{}就足够了:

pip install ruamel.venvgtk

对于我自己的工作来说,这是一个无耻的插件,这里的其他解决方案都不能像由tox所做的那样在重复的virtualenv创建中很好地工作。

在包的setup.py中,会发生以下情况:

try:
    import gtk
except ImportError:
    print('--------------')
    import subprocess
    instdir = subprocess.check_output([
        '/usr/bin/python',
        '-c',
        'import os, pygtk; print os.path.dirname(pygtk.__file__)',
    ]).strip()
    for dst_base in sys.path:
        if dst_base.strip():
            break
    for d in [
        'pygtk.pth',
        'pygtk.py',
        'gtk-2.0',
        'gobject',
        'glib',
        'cairo',
        ]:
        src = os.path.join(instdir, d)
        dst = os.path.join(dst_base, d)
        if os.path.exists(src) and not os.path.exists(dst):
            print('linking', d, 'to', dst_base)
            os.symlink(src, dst)

也就是说,系统的python被问到pygtk安装在哪里(在Linux Mint 17.1上,这是/usr/lib/python2.7/dist-packages),然后为激活的python设置到第一个路径(即非零长度)的链接。

相关问题 更多 >