2012-01-30 7 views
35

Так что я пытаюсь запустить простой пример matplotlib в моем virtualenv (в консоли). Вот код:Установка PyGtk в virtualenv

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 при его установке. –

+0

Итак, когда я попытался установить pygtk с пипсом, я получил этот msg, о котором я упоминал ранее. Затем я пошел в папку с сборкой, и там была папка pygtk. Я сделал шаги, описанные в файле INSTALL, и все работало нормально. Однако, когда я пытался запустить свой код, он жаловался на то, что pygtk не будет установлен. Я не понимаю. Что я делаю не так? –

+0

Почему бы просто не использовать другой бэкэнд? – ptomato

ответ

15

Хитрость заключается в том, чтобы вручную установить правильные пути, а затем запустить configure внутри virtualenv. Это довольно простой, но он работал на меня

Установите питону-конфигурацию в виртуальном окр и связать его с python2.7-конфигурацией:.

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

Установкой Каира в виртуальном окр:

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 отдельно. Я сам так не успел это сделать. –

+1

Я смог установить его после шагов сценария (https://gist.github.com/ches/1094799), но «import matplotlib.pyplot» по-прежнему считает, что pygtk не установлен. – ninly

+1

Я сделал все это успешно, но я все еще получаю ошибки, такие как «ИмпортError: сервер Gtk * требует установки pygtk». – Mala

0

Мой опыт (только для систем Posix) состоял в том, что некоторые пакеты не могут быть установлены в virtualenv (я думаю, это потому, что они должны скомпилировать себя и т. Д.). Иногда они могут быть установлены в отдельном пакете позже.

Одним из способов справиться с этой ситуацией является сбор и установка пакета в другом месте, а затем настройка virtualenv для загрузки этого пакета путем добавления путей пакетов сайтов. Посмотрите documentation для получения дополнительной информации. (или настроить сценарий boostrap, который изменяет путь к среде каждый раз, когда вы активируете свою среду (легко сделать с virtualenvwrapper

0

У меня такая же проблема, но я установил его, установив Пакет питона-gtk2

6

pygtk не может быть установлен в вашем virtualenv от PyPI, так

pip install pygtk 

загружу но не устанавливать. Вы можете пройти через обручи загрузки файлов деготь и компиляции и установки тех, но если это ОК, чтобы сделать ссылки на соответствующие пакеты, установленные в системе, то при активации virtualenv и установка ruamel.venvgtk достаточно:

pip install ruamel.venvgtk 

Это бесстыдный плагин для моей собственной работы, ни одно из других решений здесь не сработало с повторным созданием виртуального виртуального диска, как, например, сделано 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), а затем ссылки настроены на первое путь (то есть ненулевая длина) для активированного питона.

+0

Так что я определенно только что установил это, и он, похоже, работает до сих пор, собирается дать ему кислую проверку Anthon, и если это действительно помогает с моей работой dev, то я не против! –

+1

Это, похоже, работает только с системным python, который является/usr/bin/python, но не с любым другим python (т. Е./Opt/local/bin/python) :( –

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. I then ex 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 
    

    Он не дал мне ошибки, и поэтому я знал, что его теперь доступен в моем виртуальном окр.

Я использую Ubuntu 14.04 (64-разрядная версия) на Intel Core i5.

+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', чтобы использовать' view' из 'ase.visualize'. Хотя эти пакеты могут быть установлены обычным способом. –

Смежные вопросы