I'm using Phusion Passenger with a ruby app and I'd also like to set it up to work with an django appengine app I'm working on.
Googling for "passenger_wsgi.py" I was able to get the following very simple non-django app working on passenger:
passenger_wsgi.py:
def application(environ, start_response):
response_headers = [('Content-type','text/plain')]
start_response('200 OK', response_headers)
return ['Hello World!\n']
However, if I add the line import django.core.handlers.wsgi
into the mix, I get 'An error occurred importing your passenger_wsgi.py'. By printing out the sys.path I've discovered that at least part of the r开发者_StackOverfloweason is because Passenger is using the wrong python installation on my machine.
How can I configure Passenger (on apache) to use /opt/local/bin/python2.5
instead of the system default python?
You can specify the python interpreter via the PassengerPython
variable in the server config, virtual host, directory, or .htaccess file.
apache: PassengerPython
nginx: passenger_python
standalone: --python
I discovered that if I changed the hashbang at the first line of passenger's request_handler.py
file to #!/opt/local/bin/python2.5
, passenger used the correct python. But surely there must be a better way than modifying passenger's distribution?
One trick is to include a line like this in your passenger_wsgi.py file:
if sys.version < "2.4":
os.execl("/usr/bin/python2.4", "python2.4", *sys.argv)
or
INTERP = "/usr/local/bin/python"
if sys.executable != INTERP:
os.execl(INTERP, INTERP, *sys.argv)
Each of these basically tells the environment to use your preferred python.
精彩评论