2011-10-28 62 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