全局安装的 Python 包,但不在 virtualenv (PyGTK) 中

标签 python pygtk virtualenv

我在“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/

相关文章:

python - 在服务器上安全地执行用户提交的 python 代码

python - 通过 Chef Recipe 激活 virtualenv 并安装 python 库

python - 使用线程的GNOME小程序挂起

python - VirtualEnv 导入错误

python - 如何确保 buildout 不使用已经安装的包?

python - Python 3 中嵌套列表的对角线

python - 如何在 PySimpleGUI 中从日期中删除时间

python - 如何判断句子中两个对象之间是否存在比较?

python - PyGTK 自定义信号发送一个列表作为参数

python - Msys2 上的 Pyinstaller 与 pygobject