15

我正在使用主管运行 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

但是该过程无法启动。以下是错误日志的内容:

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,一切正常,只有当我通过主管运行它时才会抛出这个错误。

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

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

是否有任何理由说明脚本在通过终端运行时会起作用,但在通过主管运行时却不起作用?任何帮助,将不胜感激。

4

2 回答 2

33

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

environment=PYTHONPATH=/home/ubuntu/lib/

这将确保您的 python 进程PYTHONPATH在 supervisord 启动它时看到正确的。

于 2012-02-26T19:06:34.627 回答
1

将 PYTHONPATH 定义添加到环境中:

[program:twitter_track]
command = python /home/ubuntu/services/twitter.py track
environment=PYTHONPATH=/home/ubuntu/lib
于 2018-02-07T14:24:36.610 回答