Python:virtualenv - gtk-2.0

7 投票
5 回答
4145 浏览
提问于 2025-04-16 03:22

为了在我的虚拟环境中添加gtk-2.0,我做了以下操作:

$ virtualenv --no-site-packages --python=/usr/bin/python2.6 myvirtualenv
$ cd myvirtualenv
$ source bin/activate
$ cd lib/python2.6/
$ ln -s /usr/lib/pymodules/python2.6/gtk-2.0/ 

在没有site-packages的Ubuntu上使用Virtualenv

现在在Python解释器中,当我输入import gtk时,它提示:没有名为gtk的模块。当我用sudo启动解释器时,它就能正常工作。

为什么我需要使用sudo?有没有办法避免这样做呢?

更新:
我忘了提到cairo和pygtk可以正常工作,但这不是我需要的。

更新2:
这里有个目录的截图,证明我不是疯子。 http://www.friendly-stranger.com/pictures/symlink.jpg

5 个回答

1

记得要添加一个指向 pygtk.py 的链接

ln -s /usr/lib/python2.7/dist-packages/pygtk.py lib/python2.7/dist-packages/
6

这个方法对我有效(Ubuntu 11.10):

一旦你激活了你的虚拟环境目录,确保里面有'dist-packages'这个文件夹:

mkdir -p lib/python2.7/dist-packages/

然后,创建链接:

对于GTK2:

ln -s /usr/lib/python2.7/dist-packages/glib/ lib/python2.7/dist-packages/
ln -s /usr/lib/python2.7/dist-packages/gobject/ lib/python2.7/dist-packages/
ln -s /usr/lib/python2.7/dist-packages/gtk-2.0* lib/python2.7/dist-packages/
ln -s /usr/lib/python2.7/dist-packages/pygtk.pth lib/python2.7/dist-packages/
ln -s /usr/lib/python2.7/dist-packages/cairo lib/python2.7/dist-packages/

对于GTK3:

ln -s /usr/lib/python2.7/dist-packages/gi lib/python2.7/dist-packages/
10

sudo python 这样运行是没问题的,因为这个解释器没有使用你的虚拟环境。所以不要这样做。

你只链接了一个必要的项目。还需要按照你链接的问题中的答案去做其他的。

(pygtk.pth 文件特别重要,因为它告诉 Python 要把你链接的那个目录放到 Python 的路径中)

更新

把那些东西放在 $VIRTUALENV/lib/python2.6/site-packages/ 里,而不是上面的那个目录。

看起来 .pth 文件不是从那个目录读取的,而是从 site-packages 读取的。

撰写回答