在virtualenv中安装PyGtk

所以我试图在我的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 *后端需要安装pygtk。

现在乐趣开始了。 我试图安装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 ./configfure; make; make install ./configfure; make; make install 。 然而。 我不太清楚如何在virtualenv中做到这一点。 我在哪里解压pygtk的来源,以便安装在virtualenv。

诀窍是手动设置正确的path,然后在virtualenv中运行configuration。 这是非常基本的,但它为我工作。

在虚拟env中安装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 export PKG_CONFIG_PATH=/home/PATH/TO/VIRT/lib/pkgconfig ./configure --prefix=/home/PATH/TO/VIRT/ make make install 

这应该做到这一点。 只需用你自己的pathreplacePATH / TO / VIRT /。 我确定有人可以帮助添加到virtualenvwrapper的path?

我做到了

sudo apt-get install python-gtk2

我发现它已经安装了一些调查,我发现,当我创build一个虚拟环境,它缺less一些链接,所以我遇到这个post: Ubuntu上的Virtualenv没有网站包 。

我阅读它并量身定制了提供给我的设置的命令,如下所示:

  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. 最后,检查我input'python',并执行:

     >>> import pygtk 

    它没有给我错误,所以我知道它现在在我的虚拟环境中可用。

我在Intel Core i5上使用Ubuntu 14.04(64位)。

pygtk不能从PyPI安装在你的virtualenv中,所以

 pip install pygtk 

将下载,但不能安装。 你可以通过下载tar文件和编译安装这些环节,但是如果可以链接到安装在系统中的相关软件包,那么激活你的virtualenv并安装ruamel.venvgtk就足够了:

 pip install ruamel.venvgtk 

对于我自己的工作来说,这是一个无耻的插件,这里的其他解决scheme都不能很好地工作,就像例如tox所做的那样,重复的virtualenv创build工作。

在包的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 ),然后链接被设置为第一个path(非零长度)激活的python。

我的经验(仅在Posix系统上)是有些软件包不能在virtualenv安装(我认为这是因为他们需要编译自己,等等)。 有时候,他们可以安装在个人套餐中。

处理这种情况的一种方法是在别的地方编译和安装软件包,然后通过添加站点包path来configurationvirtualenv来加载该软件包。 查看更多的文档 。 (或者设置一个boostrap脚本,在你每次激活你的环境时改变环境path(用virtualenvwrapper

我有同样的问题,但我通过安装python-gtk2 debian软件包来解决它