So I have a simple service on my Raspberry Pi that runs a Python script on boot. I have also set the env variable by running export OPSESPORT=XXXX
. This is the service file:
[Unit] Description=My desc After=multi-user.target [Service] Type=simple User=pi ExecStart=/usr/bin/python /home/pi/path/to/file/somefile.py Restart=on-failure [Install] WantedBy=multi-user.target
And in somefile.py, I have:
import os PORT = int(os.environ['OPSESPORT']) #other code
Which leads to the following error when checking logs of the service:
Traceback (most recent call last): File line 141, in <module> main() File line 83, in main PORT = int(os.environ['OPSESPORT']) File in __getitem__ raise KeyError(key) KeyError: 'OPSESPORT'
This is super weird since if I just run the script, python somefile.py
, then it works fine, but if I start the service with sudo systemctl start name.service
which then runs the script, it can’t access the key. For reference, I am using Python 2.7.13 on Raspbian GNU/Linux 9 (stretch).
Advertisement
Answer
When you use sudo it doesn’t use the same env variables. Can you run systemctl start name.service without super user privileges ?
Edit: Try adding
[Service]
Enviroment="OPSESPORT=XXX"