Warum erhalte ich die Warnung "QStandardPaths: XDG_RUNTIME_DIR nicht festgelegt" jedes mal, wenn für ein Projekt PyQt5
Ich bin mit python 3.6.2 und die Verwendung von Emacs 25 für die Entwicklung eines PyQt5-Projekt in Ubuntu und es läuft mit root-rechten. Dies funktioniert gut, aber ich bin immer
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
über die Befehlszeile für jeden Lauf.
Wäre es toll, wenn Sie mir zu verstehen, was das ist und die mögliche Lösung für das gleiche vermeiden.
Den code
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent=parent)
self.setupUi(self)
# TODO: board connection
self.comPort.addItems([str(port) for port in display_SerialPorts()])
self.comPort.highlighted.connect(self.boardConnet)
def boardConnet(self):
baudrate = 9600
port = self.comPort.currentText()
ser = serial.Serial(
port, baudrate, timeout=1) # open first serial port
ser.close()
ser.open()
Dank im Voraus für Ihre Zeit – wenn ich es verpasst habe, etwas, über - oder unter-betont einen bestimmten Punkt lassen Sie mich wissen in den Kommentaren.
Stop mit root-sorglos! Dies sollte wirklich ein Fehler sein, nicht nur eine Warnung.
InformationsquelleAutor Nithin Varghese | 2017-08-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht sicher, es ist eine pyqt-oder python-problem. Wahrscheinlich dann mit root-Berechtigung ausgeführt werden Sie verlieren einige environment-Variablen und
XDG_RUNTIME_DIR
ist unter Ihnen.Ist es nicht eine große Sache ist, da Qt ist smart genug, um wieder fallen zu vernünftigen Standard, aber Sie können beibehalten des aktuellen verwendet, der die Umgebung vars mit
sudo -E <you_app>
:UPD:, anstatt Sie zu kopieren alle Ihre vars in erhöhten rechten (root) Umwelt (was steigen kann Sicherheit betreffen), können Sie explizit eine Reihe von Variablen zu halten, über
/etc/sudoers
- Datei. Bearbeiten Sie diese Datei mitsudo visudo
Befehl, und fügen Sie eine Zeile ein:UPD2: wenn Sie wollen, um den Zugriff auf serielle Geräte ohne superuser - Berechtigungen hinzufügen, die Ihre Benutzer in das Gerät, die Gruppe (in der Regel es genannt
dialout
):logout - login kann erforderlich sein, nachdem die Gruppe ändern
Ich aktualisiert meine Antwort, zu prüfen, ob dies tatsächlich funktioniert, weil ich kein serielles Gerät zur hand um es zu testen
Dies führt zu eine Warnung
QStandardPaths: wrong ownership of runtime directory /run/user/1000, 1000 instead of 0
.Und dieses Programm steckenscheint, wie Sie begann, Ihre app von den gewöhnlichen Benutzer, der die app erstellt
/run/user/1000
(es istXDG_RUNTIME_DIR
), dann Sie versuchen, die app von superuser und bekam eine Fehlermeldung über falsche Eigentum. Sie können logout-login, das Verzeichnis sollte ausgelöscht werden, neu erstellt und mit der rechten das Eigentum automatisch.Ich bin traurig, dass ich nicht Wirklich Folgen. hat die Lösung funktioniert? Ich bin vor dem gleichen Problem mit meinem code. Was genau muss ich tun?
InformationsquelleAutor 9dogs