Seite 1 von 1

Windows Subsystem Linux aus Python Skript heraus starten

Verfasst: Montag 23. Dezember 2019, 11:59
von DodgerTheRunner
Hallo,

ich habe folgendes Problem:
ich bin eingefleischter Windows User und brauche für eine kleines Projekt ein Linux Tool.
Dafür habe ich die Windows Subsystem Linux Umgebung auf meinem Rechner eingerichtet.

Mein Skript soll nun an einem bestimmten Zeitpunkt die WSL Umgebung öffnen und einen vorher definierten Befehl ausführen.
Wenn ich ein einfaches cmd-Fenster öffne und den Befehl dort ausführe, funktioniert alles problemlos.
In Python habe ich nun die subprocess -Funktion eingesetzt.

Code: Alles auswählen

subprocess.run(["calc.exe"], shell=True)
funktioniert

Code: Alles auswählen

subprocess.run(["wsl.exe", "ocrmypdf"], shell=True)
funktioniert nicht.

Code: Alles auswählen

subprocess.run(["C:/Windows/System32/wsl.exe", "ocrmypdf"], shell=True)
funktioniert auch nicht.
Antwort vom System: die angegebene Datei konnte nicht gefunden werden

wsl.exe liegt im Windows/System32 Verzeichnis, genauso wie calc.exe.

Code: Alles auswählen

wsl ocrmypdf
im cmd-Fenster ausgeführt funktioniert auch.

Was mache ich falsch?

Gruß
Dodger

Re: Windows Subsystem Linux aus Python Skript heraus starten

Verfasst: Montag 23. Dezember 2019, 13:15
von __blackjack__
``shell=True`` und Liste als erstes Argument ist zumindest schon mal falsch. Das ``shell=True`` sollte man sowieso nicht setzen, solange man nicht ganz sicher eine Shell braucht, was in keinem der Beispiele der Fall ist.

Re: Windows Subsystem Linux aus Python Skript heraus starten

Verfasst: Montag 23. Dezember 2019, 15:20
von DodgerTheRunner
ok, "shell=True" weggelassen.Geht trotzdem nicht.
In der Python-Shell kommt folgende Fehlermeldung:
Traceback (most recent call last):
Python Shell, prompt 2, line 1
# Used internally for debug sandbox under external interpreter
File "C:\Users\Familie\AppData\Local\Programs\Python\Python38-32\Lib\subprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\Familie\AppData\Local\Programs\Python\Python38-32\Lib\subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\Familie\AppData\Local\Programs\Python\Python38-32\Lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
builtins.FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden

Re: Windows Subsystem Linux aus Python Skript heraus starten

Verfasst: Montag 23. Dezember 2019, 15:25
von sparrow
Was sagt denn ein:

Code: Alles auswählen

where wsl.exe
in der Kommandozeile?

Re: Windows Subsystem Linux aus Python Skript heraus starten

Verfasst: Montag 23. Dezember 2019, 15:44
von DodgerTheRunner
Die Antwort lautet:
C:\Windows\System32\wsl.exe

Re: Windows Subsystem Linux aus Python Skript heraus starten

Verfasst: Montag 23. Dezember 2019, 15:55
von sparrow
Und im Code

Code: Alles auswählen

subprocess.run(["C:/Windows/System32/wsl.exe",])
?

Re: Windows Subsystem Linux aus Python Skript heraus starten

Verfasst: Montag 23. Dezember 2019, 16:04
von DodgerTheRunner
Problem behoben:
wsl.exe ist eine 64-bit Applikation.
Mein Python war eine 32-Bit Applikation.
32-Bit Applikationen suchen irgendwie in einem anderen Verzeichnis...

Hab Python jetzt als 64-Bit Version installiert, jetzt geht alles...