webentwicklung-frage-antwort-db.com.de

OSError: [WinError 193]% 1 ist keine gültige Win32-Anwendung

Ich versuche, eine Python-Datei "hello.py" aus dem Python-Interpreter heraus mit Subprozess aufzurufen. Ich kann diesen Fehler jedoch nicht beheben. [Python 3.4.1]. 

import subprocess    
subprocess.call(['hello.py', 'htmlfilename.htm'])
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    subprocess.call(['hello.py', 'htmlfilename.htm'])
  File "C:\Python34\lib\subprocess.py", line 537, in call
    with Popen(*popenargs, **kwargs) as p:
  File "C:\Python34\lib\subprocess.py", line 858, in __init__
    restore_signals, start_new_session)
  File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
    startupinfo)
OSError: [WinError 193] %1 is not a valid Win32 application

Gibt es auch eine andere Möglichkeit, "ein Python-Skript mit Argumenten aufzurufen", als einen Unterprozess zu verwenden? Vielen Dank im Voraus.

23
Caxton

Der Fehler ist ziemlich klar. Die Datei hello.py ist keine ausführbare Datei. Sie müssen die ausführbare Datei angeben:

subprocess.call(['python.exe', 'hello.py', 'htmlfilename.htm'])

python.exe muss im Suchpfad sichtbar sein oder Sie können den vollständigen Pfad an die ausführbare Datei übergeben, in der das aufrufende Skript ausgeführt wird:

import sys
subprocess.call([sys.executable, 'hello.py', 'htmlfilename.htm'])
23
David Heffernan

Python-Installationsprogramme registrieren normalerweise .py-Dateien beim System. Wenn Sie die Shell explizit ausführen, funktioniert sie:

import subprocess
subprocess.call(['hello.py', 'htmlfilename.htm'], Shell=True)
# --- or ----
subprocess.call('hello.py htmlfilename.htm', Shell=True)

Sie können Ihre Dateizuordnungen in der Befehlszeile mit überprüfen

C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\Python27\python.exe" "%1" %*
7
tdelaney

Ich habe die gleiche Fehlermeldung erhalten, als ich vergessen habe, Shell=True im subprocess.call zu verwenden.

subprocess.call('python modify_depth_images.py', Shell=True)

Externen Befehl ausführen

Einen externen Befehl ausführen, ohne mit ihm zu interagieren, z. B. einen würde mit os.system () tun, benutze die call () Funktion.

teilprozess importieren

Einfacher Befehl subprocess.call (['ls', '-1'], Shell = True)

1
Mona Jalal

Ich habe diesen Fehler auch erlebt. Dann installiere ich Visual Studio 2015 Redistribution package über diesen Link. Problem gelöst:). Probieren Sie es aus, bevor Sie weitere Änderungen vornehmen.

OSError: [WinError 193]% 1 ist keine gültige Win32-Anwendung

Dieser Fehler ist höchstwahrscheinlich auf diese Zeile zurückzuführen nterprozess importieren

Ich hatte das gleiche Problem und hatte es durch Deinstallieren und erneutes Installieren gelöst python und anaconda dann habe ich jupyter verwendet und geschrieben pip install numpy das gab mir den ganzen Pfad, wo es war Abrufen meiner Site-Pakete von Ich habe meinen Site-Paket-Ordner gelöscht und dann ist der Fehler verschwunden. Eigentlich, weil ich 2 Ordner für Site-Pakete hatte, einen mit Anaconda und einen anderen irgendwo in den App-Daten (die einige Probleme hatten), seit ich gelöscht habe Dieser Site-Paket-Ordner hat dann automatisch damit begonnen, meine Bibliotheken aus dem Site-Paket-Ordner zu entfernen, der mit Anaconda erstellt wurde. Daher wurde das Problem behoben.

0