[QGIS-Developer] QGIS PyQt version conflict
Ismail Sunni
imajimatika at gmail.com
Fri May 12 00:36:11 PDT 2017
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 <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 at camptocamp.com <mailto:arnaud.morvan at 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 <tel:+33%204%2058%2048%2020%2032>
>
> Camptocamp France SAS
> Savoie Technolac, BP 352
> 73377 Le Bourget du Lac Cedex
> http://www.camptocamp.com <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 <https://www.zimmi.cz/>
>>
>> _______________________________________________
>> QGIS-Developer mailing list
>> QGIS-Developer at lists.osgeo.org <mailto:QGIS-Developer at lists.osgeo.org>
>> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer <https://lists.osgeo.org/mailman/listinfo/qgis-developer>
>> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer <https://lists.osgeo.org/mailman/listinfo/qgis-developer>
>
>
>
> --
> Michal Zimmermann (zimmi)
> WWW: https://www.zimmi.cz <https://www.zimmi.cz/>_______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org <mailto:QGIS-Developer at lists.osgeo.org>
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer <https://lists.osgeo.org/mailman/listinfo/qgis-developer>
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer <https://lists.osgeo.org/mailman/listinfo/qgis-developer>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20170512/2b78e22b/attachment-0001.html>
More information about the QGIS-Developer
mailing list