【问题标题】:Supervisor - Running a python script PYTHONPATH issue主管 - 运行 python 脚本 PYTHONPATH 问题
【发布时间】:2011-12-17 07:58:49
【问题描述】:

我正在使用 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

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

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

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

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

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

【问题讨论】:

    标签: supervisord


    【解决方案1】:

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

    environment=PYTHONPATH=/home/ubuntu/lib/
    

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

    【讨论】:

      【解决方案2】:

      将 PYTHONPATH 定义添加到环境中:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-14
        • 2021-12-19
        • 2018-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多