Сохранение фигур matplotlib при запуске нескольких последующих файлов Python через файл .bat в WindowsPython

Программы на Python
Ответить
Anonymous
 Сохранение фигур matplotlib при запуске нескольких последующих файлов Python через файл .bat в Windows

Сообщение Anonymous »

НАСТРОЙКА
У меня есть несколько сценариев, которые я выполняю с помощью файла .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
...
Это серьезная проблема, поскольку 1. мои изображения не сохраняются и 2. остальная часть моего кода после вызова .savefig() не выполняется (нет печати «Bar»).
ЧТО Я ПРОБОВАЛ
Я пробовал добавить следующее, но безрезультатно:

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»