2011-10-28 7 views
8

Sto usando supervisore per eseguire uno script python:Supervisor - Esecuzione di un problema di PYTHONPATH script python

[program:twitter_track] 
autorestart = true 
numprocs = 1 
autostart = false 
redirect_stderr = True 
stopwaitsecs = 1 
startsecs = 1 
priority = 99 
command = python /home/ubuntu/services/twitter.py track 
startretries = 3 
stdout_logfile = /home/ubuntu/logs/twitter_track.log 

Ma il processo non si avvia. Ecco cosa dice il log degli errori:

Traceback (most recent call last): 
    File "/home/ubuntu/services/twitter.py", line 6, in <module> 
    from mymodule.twitter.stream import TwitterStream 
ImportError: No module named mymodule.twitter.stream 
Traceback (most recent call last): 
    File "/home/ubuntu/services/twitter.py", line 6, in <module> 

Sembra che ottenere mymodule, ma se corro twitter.py su di essa la propria, tutto funziona bene, si getta solo questo errore quando l'eseguo attraverso supervisore.

ho aggiunto mymodule al PYTHONPATH nel mio file ~/.profile in questo modo:

export PYTHONPATH=$PYTHONPATH:/home/ubuntu/lib 

C'è qualche motivo per cui lo script dovrebbe funzionare quando viene eseguito attraverso il terminale, ma non quando viene eseguito attraverso supervisore? Qualsiasi aiuto sarebbe apprezzato.

risposta

24

Aggiungere la definizione PYTHONPATH alla direttiva environment nel file di configurazione supervisord. Dovrebbe andare sotto la sezione [program:twitter_track], in questo modo:

environment=PYTHONPATH=/home/ubuntu/lib/ 

Questo farà sì che che il processo di pitone vede la corretta PYTHONPATH quando supervisord avvia.

0

Aggiungi la definizione PYTHONPATH per l'ambiente:

[program:twitter_track] 
command = python /home/ubuntu/services/twitter.py track 
environment=PYTHONPATH=/home/ubuntu/lib