Windows上のQGIS 3でQtDesignerユーザーインターフェイス(.ui)およびリソース(.qrc)ファイルをコンパイルする方法


8

QGIS 2プロセスを転置しようとしましたが、成功しませんでした。

最初に、Python36ではなくPython27への参照を含むC:\ Program Files \ QGIS 2.99 \ etc \ ini \ python-core.batを編集する必要がありました。

C:\ Program Files \ QGIS 2.99 \ bin \ o4w_env.batを実行してQGIS python環境を適切に構成しますが、起動すると次のようになります。

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

私はこのエラーを受け取ります:

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 <module>
    from PyQt5 import QtCore
ImportError: DLL load failed: Specified module could not be found.

同様に、私が起動すると:

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

私はこのエラーを受け取ります:

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 <module>
    from PyQt5.QtCore import PYQT_VERSION_STR, QDir, QFile
ImportError: DLL load failed: Specified module could not be found.

回答:


11

PyQT5環境を設定する必要があります。これは、QGIS 3プラグインをコンパイルするための私のスクリプトで、3つの補完的なバットがあります。

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

変更set OSGEO4W_ROOT=D:\OSGeo4W64する必要があるのはset OSGEO4W_ROOT="C:\Program Files\QGIS 2.99"、またはそのようなものだけです。

この.batを使ってみてください

注:このバットはプラグインと同じフォルダにあります

注2: import import resources_rcにはこのトリックが必要です

call pyuic5 --import-from <package-name>.gui.generated dialog.ui -o gui\generated\ui_dialog.py`

このパスはおそらく他のプラグインで変更されます。pyuic5

注2の@sigealソリューション:

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

それが役に立てば幸い


1
正解です。まさにそれが私が探していたものです。ありがとう。
sigeal

ただし、1つの質問:生成されたファイルの最後にある「import resources_rc」を実行すると、「No resource module with 'resources_rc'」エラーが発生します。「from。import resources_rc」でこのエラーを取り除くことができますが、ファイルが生成されるため、これは正しい解決策ではありません...
sigeal

1
これを追加する必要がありますcall pyuic5 --import-from <package-name>.gui.generated。リソースファイルのパスを入力して、再度コンパイルする必要があります。
Fran Raga 2017年

1
このコマンドで終わりましたcall pyuic5 dockwidget_base.ui --from-imports -o dockwidget_base.py。それは完全に動作します。
sigeal

1
私の答えをあなたの解決策で更新してください
Fran Raga 2017年

2

環境変数に関するすべてを見つけ、何を探しているのかを知った後、ファイル/osgeo4w_root/bin/python-qgis-dev.batを見つけました

アクティブなosgeo4wシェルから呼び出されると、すべての環境変数が設定されます。対応する.batファイルを呼び出して変数を作成します(Franciscoの提案に従います)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.