不使用Virtualenv下的 bin/python

某些情况下,我们无法或是不想使用由virtualenv创建的Python解释器。比如,在 mod_pythonmod_wsgi下,只能用唯一一个Python解释器。(wrongway补充,不过uwsgi是可以使用多个python解释器的)

幸运的是,这相当简单。只要用指定的Python解释器来 安装 应用包即可。但要使用这些模块,就得更正路径。有一个脚本可以用来更正路径,如下这般设置环境:

  1. activate_this = '/path/to/env/bin/activate_this.py'
  2. execfile(activate_this, dict(__file__=activate_this))

上述操作会更改 sys.pathsys.prefix ,但使用的仍是当前Python解释器。在隔离环境中会先寻找 sys.path 下的内容再寻找全局路径。不过全局路径始终是可以访问的(无论隔离环境是否是由 —system-site-packages 创建的)。而且,上述操作不会影响其他隔离环境,也不会更正在此之前已经引用的模块。所以,在处理web请求时才激活环境往往是无效的,应该尽可能早的激活环境和更正路径,而不是在处理请求时才开始处理。