2011-10-28 18 views
8

Używam przełożonego, aby uruchomić skrypt Pythona:Supervisor - uruchomienie skryptu python PYTHONPATH problem

[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 

Ale proces nie rozpocznie. Oto co mówi dziennik błędów:

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> 

Wydaje się, że uzyskanie mymodule, ale jeśli uruchomię twitter.py na swój własny, wszystko działa dobrze, to tylko rzuca ten błąd, gdy uruchomię go przez przełożonego.

dodałem mymodule do PYTHONPATH w moim pliku ~/.profile tak:

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

Czy istnieje jakikolwiek powód, dlaczego skrypt będzie działać, gdy prowadzony przez terminala, ale nie wtedy, gdy prowadzony przez przełożonego? Każda pomoc będzie doceniona.

Odpowiedz

24

Dodaj definicję PYTHONPATH do dyrektywy environment w pliku konfiguracyjnym supervisora. Należy przejść pod sekcji [program:twitter_track], tak:

environment=PYTHONPATH=/home/ubuntu/lib/ 

To zapewni, że proces python widzi właściwego PYTHONPATH gdy supervisord uruchamia go.

0

Dodaj definicję PYTHONPATH do środowiska:

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