Python:virtualenv - gtk-2.0
为了在我的虚拟环境中添加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 读取的。