Я тоже хотел использовать python в GMS, и у меня возникла та же ошибка. Мне потребовалось несколько часов, чтобы выяснить, почему и как это исправить:
TL; DR
Сохраните следующий код как start-gatan.bat
и используйте этот файл start-gatan.bat
для запуска GMS. Файл может быть размещен где угодно. Обратите внимание, что окно консоли должно оставаться открытым, пока GMS активен!
@echo off
rem
rem File: start-gatan.bat
rem ---------------------
SET QT_PLUGIN_PATH=%ProgramData%\Miniconda3\envs\GMS_VENV_PYTHON\Library\plugins
SET gms_path=%PROGRAMFILES%\Gatan\DigitalMicrograph.exe
echo Starting GMS
echo Do not close this window!
"%gms_path%"
Важное примечание : чтобы отобразить окно matplotlib, необходимо снять флажок «Выполнить в фоновом потоке» - флажок в нижнем колонтитуле панели кода! Кроме того, выполнение занимает сравнительно много времени.
Причина
Это не ошибка GMS и не ошибка python, а ошибка Qt
. Для рендеринга windows matplotlib
(по умолчанию) используется PyQT
, который использует Qt
. Ошибка говорит о qwindows.dll
и о том, что он не может быть найден (явно?).
Примечание: : Средство визуализации можно изменить , добавив, например, matplotlib.use('GTK3Agg')
. Это больше не показывает Qt
-Error, но показывает другую ошибку, поэтому я не следовал этой идее.
Решение
qwindows.dll
находится в %ProgramData%/Miniconda3/envs/GMS_VENV_PYTHON/Library/plugins/platforms
. Путь для плагинов платформы может быть установлен в qt.conf
(но это не исправило меня, который, в этой теме упоминают, что могут быть различия ) или в переменной среды %QT_PLUGIN_PATH%
как я нашел здесь .
Поэтому добавьте (создайте) системную переменную %QT_PLUGIN_PATH%
со значением %ProgramData%\Miniconda3\envs\GMS_VENV_PYTHON\Library\plugins
. Системная переменная в Windows может быть добавлена в Панель управления > Система > Расширенные настройки системы > Переменные среды . 1
Обратите внимание, что эта переменная среды должна присутствовать только для GMS, а не для всех других программ QT. Поэтому создайте start-gatan.bat
и скопируйте код в верхней части раздела TL; DR. Теперь запустите GMS, дважды щелкнув по start-gatan.bat
, и ваш пример кода будет работать.
Важное примечание : чтобы показать окно matplotlib, вы должны снять галочку с «Выполнить в фоновом потоке» - флажок в нижнем колонтитуле панели кода, иначе окно графика не будет видно.
1 Добавление новой переменной среды работает, но если у вас есть еще одна программа, использующая QT (которая очень скорее всего, причина) вы столкнетесь с (почти) тем же сообщением об ошибке, но в другой программе. Если у вас есть только GMS pyqt
, использующая QT, это может быть вашим решением.
Дополнительные примечания
Несколько тем форума , включая форум QT , рассказывают о дублирующих путях для этого qwindows.dll
. Если мой ответ не помог вам, вы можете посмотреть на это. Обратите внимание, что проверка переменных среды должна выполняться в среде Miniconda. Поэтому обязательно запустите
activate GMS_VENV_PYTHON
перед выводом переменных. Также вы можете захотеть взглянуть на конфигурацию qt, которую можно найти по %PROGRAMDATA%/Miniconda3/envs/GMS_VENV_PYTHON/bin
. Обратите внимание, что всегда есть файл в обычной директории Miniconda (%PROGRAMDATA%/Miniconda3/bin
) и файл в envs
.