У меня есть несколько сценариев, которые я выполняю с помощью файла .bat, например:
Код: Выделить всё
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
Всякий раз, когда я хочу сохранить изображение с помощью .savefig() в matplotlib, текущий скрипт Python завершается без ошибок и немедленно переходит к следующему файлу Python.
Например, если это мой скрипт1.py:
Код: Выделить всё
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')
Код: Выделить всё
...
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
...
ЧТО Я ПРОБОВАЛ
Я пробовал добавить следующее, но безрезультатно:
Код: Выделить всё
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
Я пытался сохранять изображения в подкаталог C:\\path\\to\\my\\project\\directory, а не в подкаталог C:\\path\\to\\my\\project\\plots, но безрезультатно.
Когда я запускаю script1.py изолированно через командную строку, он работает безупречно и непрерывно с правильно сохраненными изображениями. Это наводит меня на мысль, что это как-то связано с файлом .bat.
Это меня очень расстраивает, поскольку я понятия не имею, почему это не работает. Я сохранял цифры matplotlib тысячи раз без проблем и сохранял эту конкретную фигуру без проблем при изолированном запуске из командной строки, но файл .bat, похоже, все испортил. Есть ли что-то о файлах .bat, о которых я не знаю?
Я использую Windows 11, Python 3.11.14 через miniforge3 и maptlotlib 3.9.2
РЕДАКТИРОВАТЬ: если я удалю вызовы .savefig(), все сценарии будут выполняться сквозным образом без проблем через файл .bat.
Подробнее здесь: https://stackoverflow.com/questions/798 ... es-via-a-b
Мобильная версия