Я создаю плагин qgis и не могу найти решение этой ошибки.
File "/usr/lib/python2.7/dist-packages/qgis/utils.py", line 478, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named resources_napoved_rc
Для всех, кто спросит, я создал файл ресурсов Python:
pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
Я до сих пор не могу найти способ заставить это работать. Я всегда получаю одну и ту же ошибку.
В верхней части сценария у меня есть:
import resources_napoved_rc.py
Я использую пользовательский файл напрямую из qtbuilder. Есть идеи, как идти вперед? Я предполагаю, что это должно быть какая-то проблема пути или что-то подобное.
pyqgis
qgis-plugins
pyqt
Greg
источник
источник
No module named resources_napoved_rc
иpyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
или это ошибка опечатки?file.qrc
файл UI. (очень странно) Я попробовал также все возможные комбинации:pyrcc4 -o resources_napoved_rc.py resources_napoved_rc.qrc
import resources_napoved_rc
Ответы:
Эта проблема вызвана тем, что
uic
не работает должным образом. Я не уверен точно, почему, но я могу показать симптомы и обходной путь.Исходный
.ui
файл плагина имеет пустойresources
элемент:Когда вы редактируете ресурсы для плагина в QtDesigner, это меняется на:
Это источник проблемы. Если вы измените файл .qrc в теге include,
resourcesXXX.qrc
ошибка изменится наNo module named resourcesXXX_rc
.Примечание: следующее основано на сборке плагина с 'test', введенным во все поля компоновщика плагинов QGIS.
В файле test_dialog.py следующие строки компилируют файл .ui :
Это где ошибка происходит.
Отредактируйте
.ui
файл, чтобы вернуться к нему,<resources/>
и проблема будет решена. Пока вы снова не отредактируете свой диалог в QtDesigner. Вы должны сделать это редактирование.ui
файла после каждого редактирования вашего диалога.Решение этой проблемы заключается в том, чтобы ваш плагин работал так, как работали предыдущие версии плагина. Это включает замену вызова uic и строк класса в файле _dialog.py . Замените эти строки:
с участием:
Теперь вам придется бежать
когда вы впервые создаете свой плагин и каждый раз редактируете его диалог с помощью QtDesigner. Это был старый метод плагинов.
Независимо от того, редактировать ли
.ui
файл или запускатьpyuic4
каждый раз, ваш выбор.источник
Вы можете избежать редактирования файла .ui или компиляции и т. Д., Выполнив следующие действия:
resource_suffix по умолчанию равен «_rc», поэтому всегда ищет «resources_rc». (вы всегда можете просто оставить его по умолчанию, если вы действительно хотите использовать resources_rc, конечно)
А добавление пути файла .ui к sys.path позволяет python находить resources.py. Вы могли бы подумать, что он сможет это выяснить, поскольку ваш текущий каталог должен находиться в sys.path (и другие операции импорта из вашей текущей работы с каталогами), но это не так. Я не изучил это достаточно, чтобы понять, почему именно.
источник
Я наконец исправил это после 3 часов попытки. Как кто-то сказал, QT Designer добавляет
<resources> <include location="resources.qrc"/> </resources>
в ваш файл пользовательского интерфейса. Я просто удалил эти строки, и все работает нормально (ресурсы видны в графическом интерфейсе)
источник
Я думаю, что краткий ответ на эту проблему заключается в том, что люди загружают проект непосредственно в QGIS, а не запускают:
Файл
resources.py
генерируется только после первогоmake deploy
запуска.источник
Вот как я исправил проблему:
Подвижная> CMD
Перейдите в расположение вашего сборщика плагинов (то есть: c: /users/rafik_pc/.qgis2/python/plugins/pluginbuilder)
введите следующую команду:
(Я использовал -py2, потому что я использую Python 2.7)
перезапустите свой QGIS.
СДЕЛАННЫЙ.
источник
В итоге для меня сработало использование оригинальных ресурсов, которые появились, когда я создал пакет с помощью компоновщика плагинов, и использование его во всех других диалогах моего плагина. Я до сих пор не знаю, почему основной значок моего плагина изменяется при его перезагрузке, но я все равно получаю графику в других диалогах.
Я хотел бы, чтобы это было иначе по многим причинам. Для создания простого плагина этот подход, вероятно, работает. Это организационная штука.
Поскольку у меня было так много проблем с этими ресурсами, я собрал resources.py и resources_rc.py, поэтому, вероятно, у меня возникают проблемы при перезагрузке.
У меня нет времени заниматься этой проблемой, но команда разработчиков QGIS должна обратить на это внимание, так как она мешает людям создавать красивые плагины: D
То, что я закончил в том, чтобы иметь простое:
перед вызовом класса пользовательского интерфейса.
Спасибо за помощь мне с этим беспорядком.
PS: вам нужно «скомпилировать» ваши ресурсы перед добавлением их в ваш * .ui файл и использовать те же ресурсы -> импортировать ресурсы во все ваши диалоги плагинов. Я надеюсь, что это помогает кому-то.
источник
Выполните ту же команду, используя
Это сработает
источник