Wednesday, 6 July 2016

pyqgis - How to compile QtDesigner user interface (.ui) and resource (.qrc) files with QGIS 3 on Windows?


I tried to transpose the QGIS 2 process with no success.


I first had to edit C:\Program Files\QGIS 2.99\etc\ini\python-core.bat which contains references to Python27 instead of Python36.


I run C:\Program Files\QGIS 2.99\bin\o4w_env.bat to properly configure QGIS python environment, but then, when I launch :


"C:\Program Files\QGIS 2.99\apps\Python36\Scripts\pyuic5.bat" -o dockwidget_base.py dockwidget_base.ui

I get this error :


Traceback (most recent call last):
File "C:\PROGRA~1\QGIS2~1.99\apps\Python36\lib\runpy.py", line 193, in _run_module_as_main

"__main__", mod_spec)
File "C:\PROGRA~1\QGIS2~1.99\apps\Python36\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\PROGRA~1\QGIS2~1.99\apps\Python36\lib\site-packages\PyQt5\uic\pyuic.py", line 26, in
from PyQt5 import QtCore
ImportError: DLL load failed: Specified module could not be found.

Similarly, when I launch :


"C:\Program Files\QGIS 2.99\apps\Python36\Scripts\pyrcc5.bat" -o resources_rc.py resources.qrc


I get this error :


Traceback (most recent call last):
File "C:\PROGRA~1\QGIS2~1.99\apps\Python36\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "C:\PROGRA~1\QGIS2~1.99\apps\Python36\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\PROGRA~1\QGIS2~1.99\apps\Python36\lib\site-packages\PyQt5\pyrcc_main.py", line 21, in
from PyQt5.QtCore import PYQT_VERSION_STR, QDir, QFile
ImportError: DLL load failed: Specified module could not be found.

Answer




You need set PyQT5 environments. This is my scripts for compile QGIS 3 Plugins and have 3 complementary bats.


compile_ui.bat


@ECHO OFF

set OSGEO4W_ROOT=D:\OSGeo4W64

set PATH=%OSGEO4W_ROOT%\bin;%PATH%
set PATH=%PATH%;%OSGEO4W_ROOT%\apps\qgis\bin

@echo off

call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
call "%OSGEO4W_ROOT%\bin\py3_env.bat"
@echo off
path %OSGEO4W_ROOT%\apps\qgis-dev\bin;%OSGEO4W_ROOT%\apps\grass\grass-7.2.2\lib;%OSGEO4W_ROOT%\apps\grass\grass-7.2.2\bin;%PATH%

cd /d %~dp0

@ECHO ON
::Ui Compilation

call pyuic5 dialog.ui -o gui\generated\ui_dialog.py

::Resources
call pyrcc5 ui\resources.qrc -o gui\generated\resources_rc.py

@ECHO OFF
GOTO END

:ERROR
echo "Failed!"

set ERRORLEVEL=%ERRORLEVEL%
pause

:END
@ECHO ON

You only need change set OSGEO4W_ROOT=D:\OSGeo4W64 for set OSGEO4W_ROOT="C:\Program Files\QGIS 2.99", or something like that,


Try using this .bat


Note: this bat is in the same folder as the plugin


Note 2 : For import import resources_rc need this trick



call pyuic5 --import-from .gui.generated dialog.ui -o gui\generated\ui_dialog.py`

this path probably change in other plugin. pyuic5


@sigeal soluton for Note 2 :


call pyuic5 dockwidget_base.ui --from-imports -o dockwidget_base.py

I hope it helps


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...