Я хочу «активировать» virtualenv в файле службы systemd.Как включить виртуальную машину в сервисном блоке systemd?
Я бы хотел, чтобы у меня не было процесса оболочки между процессом systemd и интерпретатором python.
Мое текущее решение выглядит следующим образом:
[Unit]
Description=fooservice
After=syslog.target network.target
[Service]
Type=simple
User=fooservice
WorkingDirectory={{ venv_home }}
ExecStart={{ venv_home }}/fooservice --serve-in-foreground
Restart=on-abort
EnvironmentFile=/etc/sysconfig/fooservice.env
[Install]
WantedBy=multi-user.target
/etc/sysconfig/fooservice.env
PATH={{ venv_home }}/bin:/usr/local/bin:/usr/bin:/bin
PYTHONIOENCODING=utf-8
PYTHONPATH={{ venv_home }}/...
VIRTUAL_ENV={{ venv_home }}
Но у меня возникли проблемы. Я получаю ImportErrors, поскольку некоторые из них в sys.path отсутствуют.
Можете ли вы включать ошибки вы получаете? –
@PraveenYalagandula Трассировка не содержит никакой полезной информации, так как ExpressionError Exception и все строки над ней содержат только настраиваемый код, который здесь не имеет значения. – guettli