Warum gibt es einen Unterschied zwischen der Ausführung von MAME über die Shell und der Ausführung als Python-SubprozessPython

Python-Programme
Guest
 Warum gibt es einen Unterschied zwischen der Ausführung von MAME über die Shell und der Ausführung als Python-Subprozess

Post by Guest »

Ich habe versucht, das Rendern von .wav-Dateien aus dem MAME-Emulator über ein Python-Skript zu automatisieren.
Mein Ziel ist es, eine kleine Website zu haben, auf der ich meine .bin-Datei ablegen und das Skript + MAME damit umgehen lassen kann Ruhe im Hintergrund – dann gib mir meine .wav-Datei zurück, um sie herunterzuladen.
Und der gesamte Prozess funktioniert einwandfrei, mit dem winzigen kleinen Problem, dass MAME einfach nicht mit dem Python-Unterprozess funktioniert.
Der Python-Code, den ich zum Starten von MAME verwende, ist:

Code: Select all

process = subprocess.Popen(
[
'/path/to/mame',
'channelf',
'-rompath', '/path/to/mame/roms/',
'-cart', '/path/to/file.bin',
'-window',
'-seconds_to_run', str(play_length),
'-nothrottle',
'-ui', 'simple',
'-sound', 'none',
'-video', 'none',
'-wavwrite', '/path/to/file/render.wav',
],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
Dies gibt immer zurück, dass das dauerhafte Löschen von Berechtigungen nicht funktioniert hat: Datei existiert.
Der exakt gleiche Befehl wird in der Shell auf der anderen Seite ausgeführt Hand funktioniert ohne Probleme (das Arbeitsverzeichnis spielt keine Rolle, da ich nur vollständige Pfade verwende, aber ich habe auch relative Pfade aus meinem Python-Verzeichnis ausprobiert – das gleiche Ergebnis).

Code: Select all

# /path/to/mame channelf -rompath /path/to/mame/roms/ -cart /path/to/file.bin -window -seconds_to_run 240 -nothrottle -ui simple -sound none -video none -wavwrite /path/to/file/render.wav

pci id for fd 7: 1b36:0100, driver (null)
MESA-LOADER: failed to open qxl: /snap/mame/4284/gnome-platform/usr/lib/x86_64-linux-gnu/dri/qxl_dri.so: cannot open shared object file: No such file or directory (search paths /snap/mame/4284/gnome-platform/usr/lib/x86_64-linux-gnu/dri, suffix _dri)
pci id for fd 8: 1b36:0100, driver (null)
kmsro: driver missing
Average speed: 7242.29% (239 seconds)
Die Fehler hier scheinen unwichtig zu sein, da dadurch die render.wav-Datei korrekt erstellt wird.
Ich habe online keine Ressourcen zu diesem Thema gefunden Ausgabe. Die Fehlermeldung scheint von snapd zu stammen und nicht von MAME selbst, aber alle Online-Ergebnisse beziehen sich nicht auf Python-Unterprozesse. Hat jemand schon einmal so etwas probiert?
Ich frage mich im Grunde nur, welcher Unterschied zwischen Shell und Unterprozess dazu führen könnte. Und im Idealfall, wie ich das Problem beheben kann.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post