2011-10-28 114 views
8

我使用監督員運行python腳本:主管 - 運行python腳本PYTHONPATH問題

[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 

但進程無法啓動。以下是錯誤日誌中這樣說:

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> 

似乎獲得MyModule的,但如果我在它自己的運行twitter.py,一切正常,它只是拋出當我運行它通過主管此錯誤。

我在〜/ .profile文件添加MyModule的到PYTHONPATH像這樣:

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

是否有任何理由爲什麼當通過終端運行而不是在通過主管運行該腳本將工作?任何幫助,將不勝感激。

回答

24

PYTHONPATH的定義添加到supervisord配置文件中的environment指令中。它應該在你的[program:twitter_track]節去了,就像這樣:

environment=PYTHONPATH=/home/ubuntu/lib/ 

這將確保你的Python程序看到合適的PYTHONPATH時supervisord啓動它。

0

的PYTHONPATH定義添加到環境:

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