Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在virtualenv中安装PyGtk_Python_Matplotlib_Pygtk_Virtualenv - Fatal编程技术网

Python 在virtualenv中安装PyGtk

Python 在virtualenv中安装PyGtk,python,matplotlib,pygtk,virtualenv,Python,Matplotlib,Pygtk,Virtualenv,因此,我尝试在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, a

因此,我尝试在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

现在乐趣开始了。我试图pip安装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:
********************************************************************
我已经检查了
安装
文件,并说要尝试
/configfure;制作进行安装
。然而。我不太确定如何在virtualenv中做到这一点。为了安装在virtualenv中,我应该在哪里解压缩pygtk的源代码。

我的经验(仅在Posix系统上)是,有些包无法安装在
virtualenv中(我认为这是因为它们需要自己编译,等等)。有时,它们可以在以后安装到单独的软件包中


处理这种情况的一种方法是在其他地方编译并安装包,然后通过添加站点包路径配置virtualenv以加载该包。更多信息,请查看。(或者设置一个boostrap脚本,每次激活环境时都会更改环境路径(使用

很容易)。诀窍是手动设置正确的路径,然后在virtualenv中运行configure。这很基本,但对我来说很有效

在虚拟环境中安装python配置并将其链接到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

wgethttp://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
导出PKG\u CONFIG\u PATH=/home/PATH/TO/VIRT/lib/pkgconfig
./configure--prefix=/home/PATH/TO/VIRT/
制作
安装

这样就可以了。只要用您自己的路径替换PATH/TO/VIRT/就行了。我相信有人可以帮助您添加到virtualenvwrapper的路径?

我通过安装python-gtk2 debian包解决了这个问题。

pygtk
无法从PyPI安装到您的virtualenv中,所以

pip install pygtk
将下载但不安装。您可以下载tar文件并编译和安装这些文件,但如果可以链接到系统中安装的相关软件包,则激活virtualenv并安装就足够了:

pip install ruamel.venvgtk
对于我自己的工作来说,这是一个无耻的插件,这里的其他解决方案没有一个能够像
tox
那样在反复创建virtualenv时工作得很好

在包的
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)
i、 e询问系统的python在哪里安装了pygtk(在LinuxMint17.1上,这是
/usr/lib/python2.7/dist包),然后为激活的python设置指向第一个路径(即非零长度)的链接。

sudo apt get安装python-gtk2

经过调查,我发现它已经安装了,我发现当我创建虚拟环境时,它缺少一些链接,所以我看到了这篇文章:

我阅读了它,并按照如下方式定制了提供给我的设置的命令:

  • 首先,我换成了我的virtualenv,并通过

    source bin/activate
    
  • 然后我切换到virtualenv中的lib/python2.7文件夹:

    cd lib/python2.7
    
  • 然后我执行了以下命令

    $ 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/
    
  • 最后,为了检查,我键入了“python”,并执行:

    >>> import pygtk
    
    它没有给我任何错误,因此我知道它现在可以在我的虚拟环境中使用


  • 我正在使用Ubuntu 14.04(64位)在intel Core i5上。

    在安装virtualenv时,在哪里解包并不重要。好的,当我尝试用pip安装pygtk时,我得到了我之前提到的消息。然后我转到build文件夹,那里有一个pygtk文件夹。我按照安装文件中说明的步骤进行了操作,一切正常。但是,当我试着运行我的代码,它抱怨pygtk没有安装。我不明白。我做错了什么?为什么不使用不同的后端?好的,为什么不?但是哪一个适合在屏幕上渲染?我知道Agg是用于文件的。现在你必须单独构建和安装pygobject,显然。我自己没有管理ed成功地完成了此操作。我能够按照()中的脚本步骤安装它,但“import matplotlib.pyplot”仍然认为未安装pygtk。我已经成功地完成了所有这一切,但仍然会出现类似“ImportError:Gtk*后端需要安装pygtk”的错误无论出于何种原因,这似乎并没有在pythonpath中安装gtk模块。它安装到/home/PATH/to/VIRT/usr/lib/python2.7/site-packages/gtk-2.0/gtk。当然,gtk-2.0不是一个有效的模块名称——不确定为什么它会在site-packages中安装它。您能否扩展或更新
    ln-s/home/PATH/to/VIRT/bin/python config/home/PATH/TO/VIRT/bin/python2.7-config
    ,拜托?我肯定现在每个人都在使用python3,我猜源代码是
    venv/lib/python3.6/site-packages/setuptools/config.py
    ,但是,正确的目标是什么呢?所以我肯定刚刚安装了它,而且到目前为止似乎还在工作,现在就要对它进行酸性测试了,Anthon,如果真的是这样的话这似乎只适用于系统python,即/usr/bin/python,但不适用于任何其他python(即/opt/local/bin/python):(这是有效的,我认为这是一个相关的答案,因为它解决了根本的问题。我还必须做
    ln-s/usr/lib/python2.7/dist-packages/gobject/
    ln-s/usr/lib/python2.7/dist-packages/glib/
    ,以便从
    ase.visualize使用
    查看
    ode>。虽然可能是这样,但这些软件包可以按常规方式安装。