[QGIS-Developer] QGIS PyQt version conflict

Arnaud Morvan arnaud.morvan at camptocamp.com
Thu May 11 04:55:01 PDT 2017


Hello Michal,

I've also had this error some times ago, I do not remember if I succeed 
with pyuic4, nor the solution.

But IMHO it is simpler to load "ui" files at runtime.
Here is an example from "processing" plugin :

import os
from qgis.PyQt import uic

pluginPath = os.path.split(os.path.dirname(__file__))[0]
WIDGET, BASE = uic.loadUiType(
     os.path.join(pluginPath, 'ui', 'DlgConfig.ui'))

class ConfigDialog(BASE, WIDGET):


=> no need to run make or similar to create python files each time you 
change something in your ui files.

load the plugin from the source folder (create a symbolic link from home 
QGIS plugins dir to plugin source dir)
change something in the ui file
reload the plugin using "plugin reloader" and you immediately see the 
result in QGIS.

Regards

Arnaud Morvan
Ingénieur logiciel
Tél: +33 (0)4 58 48 20 32

Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac Cedex
http://www.camptocamp.com

Le 11/05/2017 à 12:44, Michal Zimmermann a écrit :
> Hi,
> I'm starting with qgis plugin development on ubuntu-based Mint OS (v 
> 18.1 Serena). I created a very simple form in Qt Designer 4.8.7 and 
> tried to convert it to python file with
>
> pyuic4 -d form.ui -o form.py
>
> This results in
>
> Traceback (most recent call last):
>   File "/usr/lib/python2.7/dist-packages/PyQt4/uic/port_v2/invoke.py", 
> line 34, in invoke
>     exit_status = driver.invoke()
>   File "/usr/lib/python2.7/dist-packages/PyQt4/uic/driver.py", line 
> 59, in invoke
>     self._generate()
>   File "/usr/lib/python2.7/dist-packages/PyQt4/uic/driver.py", line 
> 98, in _generate
>     self._opts.resource_suffix)
>   File "/usr/lib/python2.7/dist-packages/PyQt4/uic/__init__.py", line 
> 173, in compileUi
>     winfo = compiler.UICompiler().compileUi(uifile, pyfile, 
> from_imports, resource_suffix)
>   File 
> "/usr/lib/python2.7/dist-packages/PyQt4/uic/Compiler/compiler.py", 
> line 55, in __init__
>     CompilerCreatorPolicy())
>   File "/usr/lib/python2.7/dist-packages/PyQt4/uic/uiparser.py", line 
> 170, in __init__
>     self.factory = QObjectCreator(creatorPolicy)
>   File "/usr/lib/python2.7/dist-packages/PyQt4/uic/objcreator.py", 
> line 94, in __init__
>     modinfo = plugin_locals["moduleInformation"]()
>   File "<string>", line 52, in moduleInformation
>   File "/usr/lib/python2.7/dist-packages/qgis/__init__.py", line 26, 
> in <module>
>     from qgis.PyQt import QtCore
>   File "/usr/lib/python2.7/dist-packages/qgis/PyQt/QtCore.py", line 
> 28, in <module>
>     sip.setapi(api, 2)
> ValueError: API 'QDate' has already been set to version 1
>
> If I change /usr/lib/python2.7/dist-packages/qgis/PyQt/QtCore.py line 
> 28 to sip.setapi(api, 1), it works, QGIS starts with a following 
> message though:
>
> Couldn't load PyQGIS.
> Python support will be disabled.
>
> Traceback (most recent call last):   File "", line 1, in   File 
> "/usr/lib/python2.7/dist-packages/qgis/__init__.py", line 26, in     
> from qgis.PyQt import QtCore   File 
> "/usr/lib/python2.7/dist-packages/qgis/PyQt/QtCore.py", line 28, in   
>   sip.setapi(api, 1) ValueError: API 'QDate' has already been set to 
> version 2
>
> Python version:
> 2.7.12 (default, Nov 19 2016, 06:48:10)
> [GCC 5.4.0 20160609]
>
> QGIS version:
> 2.18.7 'Las Palmas', 3b30e6a
>
>
> What exactly do I have to do to make the both sides work?
>
> -- 
> Michal Zimmermann (zimmi)
> WWW: https://www.zimmi.cz
>
>
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20170511/0142114c/attachment.html>


More information about the QGIS-Developer mailing list