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).
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"
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.