systemd 서비스 파일에서 virtualenv를 "활성화"하고 싶습니다.
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 }}
하지만 문제가 있습니다. sys.path의 일부 항목이 없기 때문에 ImportErrors가 발생합니다.