2012-01-30 120 views
35

所以我想在我的virtualenv(在控制台中)运行一个简单的matplotlib示例。下面的代码:在virtualenv中安装PyGtk

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.

而现在的乐趣的开始。我想点子安装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中如何做到这一点。我在哪里解压缩pygtk的来源以便在virtualenv中安装。

+0

如果您在安装virtualenv时激活virtualenv,那么解压缩的位置应该无关紧要。 – 2012-01-30 13:29:57

+0

好的,所以当我试图用pip安装pygtk时,我得到了之前提到的msg。然后我去了生成文件夹,并有一个pygtk文件夹。我做了INSTALL文件中解释的步骤,一切正常。但是,当我试图运行我的代码时,它抱怨没有安装pygtk。我不明白。我究竟做错了什么? – 2012-01-30 19:29:25

+0

为什么不只是使用不同的后端? – ptomato 2012-02-01 09:01:02

回答

15

诀窍是手动设置正确的路径,然后在virtualenv里面运行configure。它为我工作

在虚拟ENV安装Python-config并把它链接到python2.7-配置:

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

在虚拟ENV安装开罗:

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的路径?

+2

现在,您必须单独构建并安装pygobject,显然。我自己并没有成功地做到这一点。 – 2013-07-24 16:44:39

+1

我能够按照(https://gist.github.com/ches/1094799)上的脚本步骤进行安装,但'import matplotlib.pyplot'仍然认为没有安装pygtk。 – ninly 2014-01-05 22:12:02

+1

我已经成功完成了所有这些工作,但仍然遇到如下错误: “ImportError:Gtk *后端需要安装pygtk”。 – Mala 2015-01-15 18:58:05

0

我的经验(仅在Posix系统上)有些软件包不能安装在virtualenv(我认为这是因为他们需要自行编译等)。有时他们可以在之后安装在单独的包装中。

你可以处理这种情况的一种方法是在其他地方编译和安装软件包,然后通过添加站点包路径来配置virtualenv来加载该软件包。查看documentation获取更多信息。 (或设置一个boostrap脚本,每当你激活你的环境时改变环境路径(容易做到)virtualenvwrapper

0

我有同样的问题,但我固定它通过安装的python-gtk2的Debian软件包

6

pygtk不能安装在您的virtualenv一封来自PyPI,因此

pip install pygtk 

将下载但不安装。你可以通过下载tar文件和编译和安装者的篮球,但如果是OK生成链接到系统中安装相关软件包,然后激活您的virtualenv和安装ruamel.venvgtk是不够的:

pip install ruamel.venvgtk 

这对我自己的工作来说是一个无耻的插件,这里没有其他的解决方案可以很好地工作,例如重复的virtualenv创建由tox完成。

在以下情况软件包的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) 

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

+0

所以我肯定只是安装了它,它似乎工作到目前为止,现在要给它进行酸性测试Anthon,并且如果它确实有助于我的开发工作,那么病态的up up! – 2015-01-20 01:19:17

+1

这似乎只适用于系统python是/ usr/bin/python,但与任何其他python(即,/ opt/local/bin/python)失败:( – 2017-09-24 04:23:32

7

我这样做

sudo apt-get install python-gtk2

我发现的时候,已经在一些调查装,我发现,当我创建一个虚拟环境,它缺少一些链接,所以我整个此帖一: Virtualenv on Ubuntu with no site-packages

我阅读并定制提供给我的设置的命令如下:

  1. 首先我改变到我的virtualenv和由

    source bin/activate 
    
  2. 激活它然后,我改变到lib/python2.7文件夹里面我的virtualenv:

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

    $ 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. 最后,检查我键入“蟒蛇”,并执行:

    >>> import pygtk 
    

    它给了我没有错误,因此我知道它现在在我的虚拟ENV可用。

我在Intel酷睿使用Ubuntu 14.04(64位)。

+2

这工作,我认为这是一个相关的答案,因为它解决了我必须做'ln -s/usr/lib/python2.7/dist-packages/gobject /','ln -s/usr/lib/python2.7/dist-packages/gobject /' ,'ln -s /usr/lib/python2.7/dist-packages/glib'以便使用'ase.visualize'中的'view'。虽然可能会以常规方式安装这些软件包。 – 2016-08-22 09:52:57