Auslesen einer .INI Datei
Verfasst: Freitag 17. Juni 2016, 06:41
Hallo Forum!
ich habe ein Problem, welches mich zur Verzweiflung treibt und hoffe, ihr könnt mir helfen...
Ich nutze python3 auf einem Raspberry Pi mit Raspian 7.10, welcher durch apt-get update und apt-get upgrade aktuell gehalten ist.
Das Python-Script soll aus einer .ini Datei Variablen auslesen, um den weiteren Programmablauf zu steuern. (diese .ini wird dabei via php und einer Weboberfläche verändert)
Es gibt den Benutzer pi, die Einstellungsdatei liegt in dessem Heimverzeichnis unter dem Namen settings.ini
Der RPi läuft headles im Verteilerschrank.
Folgender Code (gekürzt) im Python-Script, welches den Name start1.py trägt:
Die Datei habe ich mit chmod +x start1.py ausführbar gemacht.
Diese Datei soll ein Relais schalten; ich habe mehrere Relais, daher auch mehere Dateien (start1.py, start2.py, start3.py...)
Um alles auf einmal zu starten, habe ich die Startaufrufe in einer Datei zusammengefasst, "startall" (welche ebenso ausführbar ist)
Inhalt /home/pi/startall:
Wenn ich mich nun via PuTTY als pi anmelde und ./start1.py oder ./start eingebe, funktioniert das Script tadellos und alles verhält sich wie erwartet. Wenn ich mit als root anmelde, klappt ebenso alles.
Allerdings läuft es nicht, wenn ich es automatisch bei Systemstart ausführen lassen möchte...
Aufruf in der /etc/rc.local:
Ich konnte den Fehler in so weit eingrenzen, dass, wenn ich die Zeile auskommentiere und die Variable mit zuweise, die automatische Ausführung klappt. Es hängt somit tatsächlich am config.read
Und nun die Frage: WARUM?
Warum klappt es, als Benutzer die Datei korrekt auszuführen, als System jedoch nicht?!
Vielen Dank für Eure Hilfe und lg
ich habe ein Problem, welches mich zur Verzweiflung treibt und hoffe, ihr könnt mir helfen...
Ich nutze python3 auf einem Raspberry Pi mit Raspian 7.10, welcher durch apt-get update und apt-get upgrade aktuell gehalten ist.
Das Python-Script soll aus einer .ini Datei Variablen auslesen, um den weiteren Programmablauf zu steuern. (diese .ini wird dabei via php und einer Weboberfläche verändert)
Es gibt den Benutzer pi, die Einstellungsdatei liegt in dessem Heimverzeichnis unter dem Namen settings.ini
Der RPi läuft headles im Verteilerschrank.
Folgender Code (gekürzt) im Python-Script, welches den Name start1.py trägt:
Code: Alles auswählen
#!/usr/bin/env python3
import sys
import os
from configparser import ConfigParser
config = ConfigParser()
onfig.read('/home/pi/settings.ini')
variable = int(config.get('bereich', 'variable'))
# weiterer Programmablauf basierend auf variable
Die Datei habe ich mit chmod +x start1.py ausführbar gemacht.
Diese Datei soll ein Relais schalten; ich habe mehrere Relais, daher auch mehere Dateien (start1.py, start2.py, start3.py...)
Um alles auf einmal zu starten, habe ich die Startaufrufe in einer Datei zusammengefasst, "startall" (welche ebenso ausführbar ist)
Inhalt /home/pi/startall:
Code: Alles auswählen
#!/bin/bash
/home/pi/start1.py &
/home/pi/start2.py &
Wenn ich mich nun via PuTTY als pi anmelde und ./start1.py oder ./start eingebe, funktioniert das Script tadellos und alles verhält sich wie erwartet. Wenn ich mit als root anmelde, klappt ebenso alles.
Allerdings läuft es nicht, wenn ich es automatisch bei Systemstart ausführen lassen möchte...
Aufruf in der /etc/rc.local:
Code: Alles auswählen
/home/pi/startall
Ich konnte den Fehler in so weit eingrenzen, dass, wenn ich die Zeile
Code: Alles auswählen
config.read('/home/pi/settings.ini')
Code: Alles auswählen
variable=1
Und nun die Frage: WARUM?
Warum klappt es, als Benutzer die Datei korrekt auszuführen, als System jedoch nicht?!
Vielen Dank für Eure Hilfe und lg