WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Aufruf von Python-Funktion subprocess.call führt zu Fehler?

 

GPD
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 03.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2016, 12:17     Titel: Aufruf von Python-Funktion subprocess.call führt zu Fehler?
  Antworten mit Zitat      
Hallo,

ich will aus einem Matlab-Skript heraus eine Python-Funktion ausführen, die wiederum mittels subprocess.call Matlab ausführt.

Hintergrund:

Ich will aus einer 64-Bit-Version von Matlab die 32-Bit-Version von Matlab zentral ausführen um ein 32-Bit-Simulink-Modell auszuführen. Daher brauche ich Python als Middleware.

Hier mein Code:

Code:
clear classes
mod = py.importlib.import_module('funktionen');
py.importlib.reload(mod);
py.funktionen.simStartParkTEST() %Hier wird die Python-Funktion ausgeführt


Nun der Code in Python:

Code:
def simStartParkTEST():
    """ simuliert einen Park """

    import subprocess
    subprocess.call([r"C:\Program Files (x86)\MATLAB\R2012b\bin\matlab.exe","-nosplash", "-nodesktop","-wait","-softwareopengl", "-r","disp('Hallo')"])

    #subprocess.call([r"C:\Program Files (x86)\MATLAB\R2012b\bin\matlab.exe","-nosplash", "-nodesktop","-wait","-softwareopengl", "-r","disp('Hallo')"],stdout=subprocess.PIPE,stdin=subprocess.PIPE)


    print("DONE simStartPark4")


Der obige Python-Code funktioniert. Aber nur, weil ich stdout=subprocess.PIPE,stdin=subprocess.PIPE aus dem Funktionskopf von call rausgenomen hat. Wenn ich den unteren Funktionsaufruf wieder unkommentiere, erhalte ich folgenden Fehler:

Zitat:
Error using subprocess>_make_inheritable (line 1062)
Python Error: OSError: [WinError 6] Das Handle ist ungültig

Error in subprocess>_get_handles (line 1050)
errwrite = self._make_inheritable(errwrite)

Error in subprocess>__init__ (line 813)
errread, errwrite) = self._get_handles(stdin, stdout, stderr)

Error in subprocess>call (line 535)
with Popen(*popenargs, **kwargs) as p:

Error in funktionen>simStartParkTEST (line 164)
subprocess.call([r"C:\Program Files (x86)\MATLAB\R2012b\bin\matlab.exe","-nosplash",
"-nodesktop","-wait","-softwareopengl", "-r","disp('Hallo')"],stdout=subprocess.PIPE,stdin=subprocess.PIPE)


Wenn ich die Python-Funktion direkt aus Python starte, erhalte ich diesen Fehler nicht!

Weiss jemand, warum bei Ausführen aus Matlab heraus sich der Fehler Python Error: OSError: [WinError 6] Das Handle ist ungülti einstellt und was dieser zu bedeuten hat?
Private Nachricht senden Benutzer-Profile anzeigen


Gast99999

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2018, 11:13     Titel: Korrektur
  Antworten mit Zitat      
schreibe anstatt:
py.funktionen.simStartParkTEST() %Hier wird die Python-Funktion ausgeführt
Folgendes:
mod.simStartParkTEST() %Hier wird die Python-Funktion ausgeführt
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.