[QGIS-Developer] QGIS PyQt version conflict

Michal Zimmermann zimmicz at gmail.com
Fri May 12 00:53:55 PDT 2017


Hey gus,
thanks for the tips, I'll give it a try!

On Fri, May 12, 2017 at 9:36 AM, Ismail Sunni <imajimatika at gmail.com> wrote:

> Hi, I (or we) also use the same method as Arnaud.
>
> The only drawback is you can’t get the autocomplete from the python file
> (from the ui file). But the benefit is greater: no need to ship generated
> python code, no need to compile every time we change the .ui file. The
> development is faster now.
>
> I don’t think we need to see the generated python code from the .ui file.
>
> You can see here for the utilities method : https://github.com/inasafe/
> inasafe/blob/develop/safe/utilities/resources.py#L107
>
> Best Regards
>
>
> On 12May, 2017, at 12:34, Michal Zimmermann <zimmicz at gmail.com> wrote:
>
> Hi,
> that looks like an interesting workaround! What are the pitfalls? Don't
> you need to see the real python code when developing?
>
> On Thu, May 11, 2017 at 1:55 PM, Arnaud Morvan <arnaud.morvan@
> camptocamp.com> wrote:
>
>> 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 <+33%204%2058%2048%2020%2032>
>>
>> Camptocamp France SAS
>> Savoie Technolac, BP 352
>> 73377 Le Bourget du Lac Cedexhttp://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 listQGIS-Developer at lists.osgeo.org
>> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>>
>>
>>
>
>
> --
> 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
>
>
>


-- 
Michal Zimmermann (zimmi)
WWW: https://www.zimmi.cz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20170512/51105eca/attachment.html>


More information about the QGIS-Developer mailing list