2010-05-16 6 views
1

J'utilise Phusion Passenger avec une application ruby ​​et je voudrais aussi le configurer pour fonctionner avec une application django appengine sur laquelle je travaille.Comment puis-je dire à Phusion Passenger quel python utiliser?

recherche sur Google pour "passenger_wsgi.py" j'ai pu obtenir ce qui suit très simple application non-django travaillant sur passager:

passenger_wsgi.py:

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

Cependant, si j'ajoute la ligne import django.core.handlers.wsgi dans le mélange, je reçois «Une erreur s'est produite lors de l'importation de votre passenger_wsgi.py». En imprimant le sys.path j'ai découvert qu'au moins une partie de la raison est parce que Passenger utilise la mauvaise installation de python sur ma machine.

Comment puis-je configurer Passenger (sur Apache) pour utiliser /opt/local/bin/python2.5 au lieu de python par défaut du système?

+0

Wow cool. Je ne sais jamais passager travaille également avec django. –

Répondre

1

J'ai découvert que si j'ai changé le hashbang à la première ligne du fichier request_handler.py du passager à #!/opt/local/bin/python2.5, le passager a utilisé le bon python. Mais il doit sûrement y avoir une meilleure façon que de modifier la distribution des passagers?

2

Une astuce consiste à inclure une ligne comme celui-ci dans votre fichier passenger_wsgi.py:

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

ou

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

Chacun de ces raconte essentiellement l'environnement d'utiliser votre préféré python.

Questions connexes