我在“virtualenv”中遇到了一些关于 PyGTK 的奇怪问题。 gtk 不会在我的 virtualenv 中导入,而它会在我的全局 python 安装中导入。 (我上周没有遇到这个特殊问题,猜测是某些软件更新扰乱了某些东西。)
是否有解决此行为的好方法?
此处显示:全局导入 gtk,
tom@zeppelin:~$ python
Python 2.7.1+ (r271:86832, Sep 27 2012, 21:12:17)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gtk
>>> gtk
<module 'gtk' from '/usr/lib/pymodules/python2.7/gtk-2.0/gtk/__init__.pyc'>
然后无法导入 gtk,
tom@zeppelin:~$ workon py27
(py27)tom@zeppelin:~$ python
Python 2.7.1+ (r271:86832, Sep 27 2012, 21:12:17)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gtk
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named gtk
不幸的是,这破坏了我的 ipython --pylab 环境:http://pastebin.com/mM0ur7Hc
更新: 我能够按照 grepic/这个线程的建议添加符号链接(symbolic link)来解决这个问题:Python: virtualenv - gtk-2.0
有一点不同,即我的“cairo”包位于 /usr/lib/pymodules/python2.7/cairo/
而不是 /usr/lib/python2 .7/dist-packages/cairo
.
第二次更新:
我还发现将以下行添加到我的 venv/bin/activate
中很有用:
export PYTHONPATH=$PYTHONPATH:/home/tom/.virtualenvs/py27/lib/python2.7/dist-packages
export PYTHONPATH=$PYTHONPATH:/home/tom/.virtualenvs/py27/lib/python2.7/dist-packages/gtk-2.0
export PYTHONPATH=$PYTHONPATH:/usr/lib/pymodules/python2.7/gtk-2.0
(我怀疑其中一个或多个是不必要的,但我已经摆弄这个太久了,决定停止调查——我的设置现在可以工作了,所以我很满意。)
问题解决了!谢谢大家。
最佳答案
尝试使用 --system-site-packages 标志创建您的虚拟环境。
关于全局安装的 Python 包,但不在 virtualenv (PyGTK) 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830662/