我最近在使用python进行开发时一直在使用virtualenv.我喜欢使用--no-site-packages选项的隔离开发环境的想法,但在开发PyGTK应用程序时这样做可能有点棘手.默认情况下,PyGTK模块安装在Ubuntu上,我想让virtualenv(使用--no-site-packages)知道位于系统其他位置的特定模块.
最好的方法是什么?或者我应该吮吸它并删除--no-site-packages选项?
$ 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/ $ ln -s /usr/lib/pymodules/python2.6/pygtk.pth $ ln -s /usr/lib/pymodules/python2.6/pygtk.py $ ln -s /usr/lib/pymodules/python2.6/cairo/ $ python >>> import pygtk >>> import gtk
一种方法是使用sys.path将路径添加到代码中.
import sys sys.path.append(somepath)
另一种方法是使用site,除了添加到sys.path之外,还处理.pth文件.
import site site.addsitedir(sitedir, known_paths=None)
https://docs.python.org/library/site.html
但您可能不希望将此添加到所有相关代码中.
我已经看到提到sitecustomize.py被用来执行这样的事情,但经过一些测试我无法让它按预期工作.
在这里,它提到sitecustomize.py的自动导入以2.5结尾,如果你没有在2.5上试一试.(只需将上面的路径添加方法之一添加到文件中并将其放在程序运行的目录中)在2.5及以上的用户的帖子中提到了一种解决方法.
http://code.activestate.com/recipes/552729/