Ich habe mehrere Skripte, die ich mit einer .bat-Datei ausführe, etwa so:
Code: Select all
cd C:\\path\\to\\my\\project\\directory
echo Running script 1
"C:\\ProgramData\\miniforge3\\envs\\myenv\\python.exe" script1.py
echo.
echo Running script 2
"C:\\ProgramData\\miniforge3\\envs\\myenv\\python.exe" script2.py
echo.
echo Running script 3
"C:\\ProgramData\\miniforge3\\envs\\myenv\\python.exe" script3.py
echo.
echo Complete!
pause
Immer wenn ich ein Bild mit matplotlibs .savefig() speichern möchte, endet das aktuelle Python-Skript ohne Fehler und springt sofort zur nächsten Python-Datei.
Wenn dies beispielsweise mein script1.py ist:
Code: Select all
import matplotlib.pyplot as plt
print('Foo')
x = [1,2,3,4]
y = [1,2,3,4]
plt.plot(x,y)
plt.savefig('C:\\path\\to\\my\\project\\directory\\plots\\plot.png')
print('Bar')
Code: Select all
...
C:\\path\\to\\my\\project\\directory> echo Running script 1
Foo
C:\\path\\to\\my\\project\\directory>echo.
C:\\path\\to\\my\\project\\directory>echo Running script 2
...
WAS ICH VERSUCHT HABE
Ich habe versucht, Folgendes hinzuzufügen, ohne Erfolg:
Code: Select all
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
Ich habe versucht, Bilder im Unterverzeichnis C:\\path\\to\\my\\project\\directory statt im Unterverzeichnis C:\\path\\to\\my\\project\\directory\\plots zu speichern, ohne Erfolg.
Wann Ich führe script1.py isoliert über die Befehlszeile aus, es läuft einwandfrei durchgängig und die Bilder werden ordnungsgemäß gespeichert. Dies lässt mich vermuten, dass es etwas mit der .bat-Datei zu tun hat.
Das frustriert mich wirklich, da ich keine Ahnung habe, warum das nicht funktionieren sollte. Ich habe Matplotlib-Figuren tausende Male ohne Probleme gespeichert und diese spezielle Figur ohne Probleme, wenn ich sie isoliert über die Befehlszeile ausführe, aber die .bat-Datei bringt scheinbar alles durcheinander. Gibt es etwas über .bat-Dateien, das mir nicht bekannt ist?
Ich verwende Windows 11, Python 3.11.14 über miniforge3 und Maptlotlib 3.9.2
BEARBEITEN: Wenn ich die .savefig()-Aufrufe entferne, werden alle Skripte durchgängig ohne Probleme über die .bat-Datei ausgeführt.
Mobile version