2011-10-28 5 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ファイルにPYTHONPATHにのmymoduleを追加しました:スーパーバイザーを介して実行時に端子を介してではなく、実行時に

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

はスクリプトが動作する理由何らかの理由はありますか?どんな助けもありがとう。

答えて

24

PYTHONPATHの定義を、スーパーバイザコンフィギュレーションファイルの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 
関連する問題