我如何告诉Phusion Passenger使用哪个python?

时间:2010-05-16 01:53:52

标签: python django apache passenger wsgi

我正在使用带有红宝石应用程序的Phusion Passenger,我也想将其设置为与我正在使用的django appengine应用程序一起工作。

谷歌搜索“passenger_wsgi.py”我能够得到以下非常简单的非django应用程序:

passenger_wsgi.py:

def application(environ, start_response):
   response_headers = [('Content-type','text/plain')]
   start_response('200 OK', response_headers)
   return ['Hello World!\n']

但是,如果我将行import django.core.handlers.wsgi添加到混音中,我会收到'导入您的passenger_wsgi.py时出错'。通过打印sys.path我发现至少部分原因是因为Passenger在我的机器上使用了错误的python安装。

如何配置Passenger(在apache上)使用/opt/local/bin/python2.5而不是系统默认的python?

3 个答案:

答案 0 :(得分:3)

我发现如果我将乘客的request_handler.py文件的第一行的hashbang更改为#!/opt/local/bin/python2.5,乘客就会使用正确的python。但肯定有一个比修改乘客分布更好的方法吗?

答案 1 :(得分:3)

一个技巧是在passenger_wsgi.py文件中包含这样的一行:

if sys.version < "2.4":
os.execl("/usr/bin/python2.4", "python2.4", *sys.argv)

INTERP = "/usr/local/bin/python"
if sys.executable != INTERP:
os.execl(INTERP, INTERP, *sys.argv)

这些基本上都告诉环境使用你喜欢的python。

答案 2 :(得分:1)

您可以通过服务器配置,虚拟主机,目录或.htaccess文件中的PassengerPython变量来指定python解释器。

apache:PassengerPython

nginx:passenger_python

独立:--python