How to enable a virtualenv in a systemd service unit?
<p>I want to &quot;activate&quot; a virtualenv in a systemd service file.</p>
<p>I would like to avoid having a shell process between the systemd process and the python interpreter.</p>
<p>My current solution looks like this:</p>
<pre><code>[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
</code></pre>
<p>/etc/sysconfig/fooservice.env</p>
<pre><code>PATH={{ venv_home }}/bin:/usr/local/bin:/usr/bin:/bin
PYTHONIOENCODING=utf-8
PYTHONPATH={{ venv_home }}/...
VIRTUAL_ENV={{ venv_home }}
</code></pre>
<p>But I am having trouble. I get ImportErrors since some entries in <code>sys.path</code> are missing.</p>