Installing PyGtk in virtualenv


So I am trying to run a simple matplotlib example in my virtualenv (in the console). Here's the code:

import matplotlib
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)

However, when I run this I get:

ImportError: Gtk* backend requires pygtk to be installed.

And now the fun starts. I tried to pip install pygtk but it throws:

* 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 egg_info:

I have checked the INSTALL file and says to try ./configfure; make; make install. However. I am not quite sure how to do this within virtualenv. Where do I unpack the sources for pygtk in order to be installed within virtualenv.

1/30/2012 1:55:48 PM

Accepted Answer

The trick is to manually set the correct paths and then run configure inside the virtualenv. This is quite basic, but it worked for me.

Install python-config in the virtual env and link it to python2.7-config:

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

Install cairo in the virtual env:

tar -xf py2cairo-1.10.0.tar.bz2
cd py2cairo-1.10.0
./waf configure --prefix=/home/PATH/TO/VIRT/
./waf build
./waf install

Install PyGTK

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 install

And that should do it. Just replace PATH/TO/VIRT/ with your own path. I'm sure someone could assist on adding the path to virtualenvwrapper?

1/24/2018 4:15:12 AM

I did this

sudo apt-get install python-gtk2

I found that it was already installed upon some investigation, i found out that when I create a virtual environment, it was missing some links so I came across this post: Virtualenv on Ubuntu with no site-packages.

I read it and tailored the commands provided to my setup as follows:

  1. First I changed into my virtualenv and activated it by

    source bin/activate
  2. Then I changed into the lib/python2.7 folder inside my virtualenv:

    cd lib/python2.7
  3. I then executed the following commands.

    $ ln -s /usr/lib/python2.7/dist-packages/cairo/
    $ ln -s /usr/lib/python2.7/dist-packages/
    $ ln -s /usr/lib/python2.7/dist-packages/pygtk.pth
    $ ln -s /usr/lib/python2.7/dist-packages/gtk-2.0/
  4. Finally, to check I typed 'python', and executed:

    >>> import pygtk

    It gave me no error, and therefore I knew its now available in my virtual env.

I'm using Ubuntu 14.04 (64-bit) on an intel Core i5.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow