主管 - 运行python脚本PYTHONPATH问题

Han*_*pan 12 supervisord

我正在使用supervisor来运行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
Run Code Online (Sandbox Code Playgroud)

但这个过程无法启动.以下是错误日志的说明:

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>
Run Code Online (Sandbox Code Playgroud)

似乎获得mymodule,但如果我自己运行twitter.py,一切正常,它只会在我通过主管运行时抛出此错误.

我在我的〜/ .profile文件中将mymodule添加到PYTHONPATH中,如下所示:

export PYTHONPATH=$PYTHONPATH:/home/ubuntu/lib
Run Code Online (Sandbox Code Playgroud)

脚本在通过终端运行时是否有效,但在通过主管运行时是否有任何原因?任何帮助,将不胜感激.

小智 30

PYTHONPATH定义添加到environmentsupervisord配置文件中的指令.它应该在你的[program:twitter_track]部分下面,如下:

environment=PYTHONPATH=/home/ubuntu/lib/
Run Code Online (Sandbox Code Playgroud)

这将确保你的python进程PYTHONPATH在supervisord启动时看到正确的.