Szenario 1: Automatisierte Aufgaben auf Jenkins ausführen, beim Ausführen der Testaufgabe den Jenkins-Benutzer (mit Sudo-Berechtigungen) verwenden, das Testskript wird unter Linux ausgeführt ( Hintergrund), wenn der folgende Code ausgeführt wird. Fehlerbericht:
os.system(f"/usr/bin/konsole -e {cmd_orin2_10s}")
Szenario 2: Es gibt kein Problem, wenn das Testskript lokal mit dem Root-Benutzer ausgeführt wird, kann das Befehlsfenster normal geöffnet werden
Fehlerprotokoll:
17:44:03 qt.qpa.xcb: could not connect to display 17:44:03 qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. 17:44:03 This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. 17:44:03 17:44:03 Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.
Lösung:
Aus Szenario 1 Im Vergleich zu Szenario 2 ist ersichtlich, dass es durch Umgebungsvariablen verursacht werden sollte. Um das Problem unter den beiden Aspekten Umgebungsvariablen und Anzeigefenster zu finden, finden Sie export DISPLAY=":0.0"
Manchmal gewöhnt man sich an die Verwendung von Pycharm und erledigt alles, ignoriert jedoch viele Pfadprobleme. Wenn Sie beispielsweise gelegentlich mit anderen Umgebungen und Plattformen interagieren müssen, ist das Schreiben eines C#-Programms zum Aufrufen von Python gleichbedeutend mit einer Ausrede. Zu diesem Zeitpunkt wird das Terminal durch Übergeben von Parametern gestartet. Der Grund dafür ist, dass die externe Umgebung beim Aufrufen der Python-Schnittstelle verschiedene Module in Ihrem Programm finden muss Wenn es nicht zur Umgebungsvariablen hinzugefügt wird, wird es nicht gefunden. Daher wird empfohlen, die folgende Anweisung am Anfang jeder verwendeten py-Datei zu verwenden aktuelle Datei Fügen Sie es der Umgebungsvariablen hinzu, damit Sie problemlos alle Dateien im Verzeichnis der oberen Ebene aufrufen können
Wenn Sie viele Verzeichnisebenen haben und sich das aktuelle Verzeichnis an einem tieferen Ort befindet, können Sie diesen Befehl leicht ändern Kurz gesagt, schließen Sie einfach alle Dateien und Verzeichnisse ein, die Sie verwenden möchten. Sie können zum Beispiel
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../')
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../../')
Das obige ist der detaillierte Inhalt vonSo beheben Sie den Fehler beim Öffnen des Terminals mit Python unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!