web-dev-qa-db-ja.com

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をpipインストールしようとしましたが、スローされます:

********************************************************************
* 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内でこれを行う方法はよくわかりません。 virtualenv内にインストールするために、pygtkのソースをどこで解凍しますか。

37

トリックは、正しいパスを手動で設定してから、virtualenv内でconfigureを実行することです。これは非常に基本的なことですが、私にとってはうまくいきました。

仮想環境に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.0
export PKG_CONFIG_PATH=/home/PATH/TO/VIRT/lib/pkgconfig
./configure --prefix=/home/PATH/TO/VIRT/
make 
make install

そして、それはそれを行う必要があります。 PATH/TO/VIRT /を独自のパスに置き換えるだけです。誰かがvirtualenvwrapperへのパスの追加を支援できると確信していますか?

17
salomonvh

これは私がしました

Sudo apt-get install python-gtk2

いくつかの調査で既にインストールされていることがわかりました。仮想環境を作成すると、いくつかのリンクが欠落していることがわかりましたので、この投稿に出会いました: サイトパッケージのない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. 最後に、「python」と入力して実行しました:

    >>> import pygtk
    

    エラーは発生しなかったため、仮想環境で使用できるようになりました。

Intel Core i5でUbuntu 14.04(64ビット)を使用しています。

10
Lenny Linus

pygtkはPyPIからvirtualenvにインストールできないため、

pip install pygtk

ダウンロードはするがインストールはしない。 tarファイルをダウンロードし、それらをコンパイルしてインストールするというフープを実行できますが、システムにインストールされている関連パッケージへのリンクを作成して、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)

つまり、システムのpythonはpygtkのインストール場所を尋ねられます(Linux Mint 17.1では/usr/lib/python2.7/dist-packages)、アクティブ化されたpythonの最初のパス(ゼロ以外の長さ)へのリンクが設定されます。

7
Anthon

私の経験(Posixシステムのみ)では、一部のパッケージをvirtualenvにインストールできないことがありました(自分でコンパイルする必要があるなどだと思います)。後で個別のパッケージにインストールできる場合があります。

この状況に対処できる1つの方法は、パッケージをコンパイルして別の場所にインストールし、サイトパッケージパスを追加してそのパッケージをロードするようにvirtualenvを構成することです。詳細については documentation をご覧ください。 (または、環境をアクティブにするたびに環境パスを変更するboostrapスクリプトをセットアップします( virtualenvwrapper で簡単に実行できます)

0
Jeff Tratner

私は同じ問題を抱えていますが、python-gtk2 debianパッケージをインストールして修正しました