Error mit .py bei DOS Aufruf aus Octave heraus

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
SebastianW
User
Beiträge: 6
Registriert: Samstag 4. November 2017, 19:15

Hallo zusammen,

ich habe ein Problem mit einem MatLab-Skript, das ich jetzt mit Octave ausführen möchte. Es steuert eine Co-Simulation zwischen zwei Programmen.
Mit MatLab hat alles gut funktioniert, auf einem anderen Rechner ohne MatLab-Lizenz führt es zu einem Fehler bei beim dos(..)-Befehl in Octave.

dos("<Starten einer Command>" "<Pfad zu meinem Python-Skript>" "<Programm-Datei>" "<Simulations-Case>" hidden)

Octave meldet den folgenden Fehler:
Error opening Python script D:\SG_EHDT_Simulation\T100E\3600rpm\step_1\excite\Test.py

Ich habe auch schon versucht das Programm direkt aus der Windows cmd zu starten, was zum gleichen Fehler führt. Für mich sieht es nach einem Problem mit dem Python-Skript aus, also habe ich Anaconda installiert, läuft aber immer noch nicht. Könnte es ein Problem mit fehlenden System-Variablen sein?
Oder hat jemand eine Idee woran es liegen könnte?

Bin ich hier mit meiner Frage richtig? Kann mir jemand weiterhelfen?
Vielen Dank für eure Zeit.

Grüße
Sebastian
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@SebastianW: Python funktioniert bei Dir im Prinzip? Die Datei `D:\SG_EHDT_Simulation\T100E\3600rpm\step_1\excite\Test.py` existiert auch? Wie sieht der Aufruf genau aus?
SebastianW
User
Beiträge: 6
Registriert: Samstag 4. November 2017, 19:15

Hallo Sirius,

danke für die schnelle Antwort.
Ja, prinzipiell funktioniert das Python-Skript. Aus MatLab heraus auf einem anderen Rechner hat der Code ohne Probleme funktioniert.
Auf dem anderen Rechner mit Octave funktioniert das Octave-Skript auch, nur bei dem Aufruf nicht. Ich denke, dass der Rechner nicht mit Python-Dateien klarkommt. Deshalb auch der Versuch mit der Installation von Anaconda.

Der vollständige Code ist:
dos("C:\Program Files (x86)\AVL\bin\aws_cmd" "D:\SG_EHDT_Simulation\T100E\3600rpm\step_1\excite\Test.py" "D:\SG_EHDT_Simulation\T100E\3600rpm\step_1\excite\EHD_T.ex" "JBT_IME.D_30_B_30" hidden)

Grüße
Sebastian
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@SebastianW: deswegen ja die Frage, wie Du das Pythonskript startest. Was soll `aws_cmd` sein? Wie startet das Python?
Der normale Weg wäre
[codebox=matlab file=Unbenannt.m]
dos("C:\Python_xxx\bin\python.exe D:\SG_EHDT_Simulation\T100E\3600rpm\step_1\excite\Test.py D:\SG_EHDT_Simulation\T100E\3600rpm\step_1\excite\EHD_T.ex JBT_IME.D_30_B_30")
[/code]
SebastianW
User
Beiträge: 6
Registriert: Samstag 4. November 2017, 19:15

Der Dos-Befehl startet eine Cmd von einem Simulationsprogramm (das ist die aws_cmd), welches dann durch das Python-Skript gesteuert wird.
SebastianW
User
Beiträge: 6
Registriert: Samstag 4. November 2017, 19:15

Du würdest die Anführungszeichen über den gesamten Ausdruck setzen und nicht die einzelnen Aufrufe einklammern?
Probiere ich mal gerade...
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Ja aber WIE startet dieses `aws_cmd` Python?
SebastianW
User
Beiträge: 6
Registriert: Samstag 4. November 2017, 19:15

Der Aufruf mit mehreren Anführungszeichen ist anscheinend korrekt. Anführungszeichen um den gesamten Ausdruck funktionieren gar nicht.
Das Simulationsprogramm hat Python mitinstalliert und startet über die aws_cmd selber Python.
Ich weiß nicht, wie genau die cmd arbeitet. Aber es gibt einen Python-Ordner im Installationspfad der Software.
SebastianW
User
Beiträge: 6
Registriert: Samstag 4. November 2017, 19:15

Sirius,

Okay, ich habe verstanden, dass das Problem offensichtlich im Aufruf selbst besteht.
Ich werde direkt mit dem Support für das Programm sprechen.
Vielen Dank deine Zeit und für die hinweisenden Fragen. Konnte damit das Problem sehr gut eingrenzen.

Vielen Dank und schönes Wochenende!

Gruß
Sebastian
Antworten