所以我试图在我的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:
********************************************************************
我已检查INSTALL
文件并说要尝试./configfure; make; make install
。然而。我不太确定如何在virtualenv中做到这一点。我在哪里解压缩pygtk的源代码以便安装在virtualenv中。
答案 0 :(得分:16)
诀窍是手动设置正确的路径,然后在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的路径吗?
答案 1 :(得分:10)
我做了这个
sudo apt-get install python-gtk2
我发现它已经安装了一些调查,我发现当我创建一个虚拟环境时,它缺少一些链接,所以我遇到了这个帖子: Virtualenv on Ubuntu with no site-packages
我阅读并按照以下方式定制了提供给我的设置的命令:
首先我改变了我的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
它没有给我任何错误,因此我知道它现在可以在我的虚拟环境中使用。
我在intel Core i5上使用Ubuntu 14.04(64位)。
答案 2 :(得分:6)
pygtk
无法从PyPI安装在virtualenv中,所以
pip install pygtk
将下载但不安装。您可以通过下载tar文件并编译和安装它们的箍,但如果可以链接到系统中安装的相关软件包,那么激活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)
即系统的python被问到pygtk的安装位置(在Linux Mint 17.1上这是/usr/lib/python2.7/dist-packages
),然后链接被设置为第一个路径(非零长度)激活的python。
答案 3 :(得分:0)
我的经验(仅在Posix系统上)是因为某些软件包无法安装在virtualenv
中(我认为这是因为它们需要自己编译等)。有时它们可以在之后安装在单独的包装中。
您可以处理这种情况的一种方法是在其他地方编译和安装软件包,然后配置virtualenv以通过添加site-packages路径来加载该软件包。查看documentation了解更多信息。 (或设置一个boostrap脚本,每次激活环境时都会更改环境路径(使用virtualenvwrapper
答案 4 :(得分:0)
我遇到了同样的问题,但我通过安装python-gtk2 debian软件包修复了它