2012-01-30 132 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