Супервизор-запуск Python-скрипта PYTHONPATH

Я использую 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 к PYTHONPATH в моем ~/.файл профиля так:

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

есть причина, по которой скрипт будет работать через терминал, но не при запуске через менеджер? Любая помощь будет оценена.

2 ответов


добавить PYTHONPATH определение , например:

environment=PYTHONPATH=/home/ubuntu/lib/

Это гарантирует, что ваш процесс python видит правильный PYTHONPATH когда supervisord запускает его.


добавьте определение PYTHONPATH в среду:

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