<p><code>pygtk</code>无法从PyPI安装到您的virtualenv中,因此</p>
<pre><code>pip install pygtk
</code></pre>
<p>将下载但不安装。您可以下载tar文件并编译和安装这些文件,但如果可以链接到系统中安装的相关软件包,那么激活virtualenv并安装<a href="https://pypi.python.org/pypi/ruamel.venvgtk" rel="nofollow noreferrer">^{<cd2>}</a>就足够了:</p>
<pre><code>pip install ruamel.venvgtk
</code></pre>
<p>对于我自己的工作来说,这是一个无耻的插件,这里的其他解决方案都不能像由<code>tox</code>所做的那样在重复的virtualenv创建中很好地工作。</p>
<p>在包的<code>setup.py</code>中,会发生以下情况:</p>
<pre><code>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)
</code></pre>
<p>也就是说,系统的python被问到pygtk安装在哪里(在Linux Mint 17.1上,这是<code>/usr/lib/python2.7/dist-packages</code>),然后为激活的python设置到第一个路径(即非零长度)的链接。</p>