[PyQt] Problem with resource imports in pyuic generated files

Elvis Stansvik elvstone at gmail.com
Tue Feb 16 18:56:59 GMT 2016


2016-02-16 19:54 GMT+01:00 Elvis Stansvik <elvstone at gmail.com>:
> 2016-02-16 19:35 GMT+01:00 Baz Walter <bazwal at ftml.net>:
>> On 16/02/16 12:25, Elvis Stansvik wrote:
>>>
>>> I have the following setup in my distribution (cut down to show the
>>> essentials):
>>>
>>> orexplore.gui/
>>>      orexplore/gui/ui/main_window.ui  --pyuic5-->
>>> orexplore/gui/ui/main_window_ui.py
>>>      resources/icons.qrc  --pyrcc5-->  orexplore/gui/resources/icons_rc.py
>>>
>>> That is, orexplore.gui is the top-level distribution directory. The
>>> orexplore/ subdirectory is my main Python package. In resources/ I
>>> keep .qrc files (kept outside the package source tree), and in
>>> orexplore/gui/ui I have my .ui files (kept as part of the package
>>> source tree).
>>>
>>> The problem is that if, in Designer, I set the icon for the main
>>> window in main_window.ui to be an icon from the resources/icons.qrc
>>> resource, then pyrcc5 --from-imports will generate an import statement
>>>
>>> from . import icons_rc
>>>
>>> which obviously won't be found.
>>
>>
>> A common directory structure would be something like this:
>>
>> container_dir/
>>
>>   designer_files/
>>     main_window.ui
>>
>>   icons/
>>     app_icon.png
>>   resources.qrc
>>
>>   python_package/
>>     ui/
>>       main_window.py
>>       resources_rc.py
>>     app_logic.py
>>   main.py
>>
>> So the python package directory contains python modules and nothing else.
>> The resource module generated by pyrcc just goes in the same directory as
>> the ones generated by pyuic, which solves the import issue.
>
> Ah yes, probably a good idea to to break the .ui files out of the
> python package as well. Thanks.
>
> For now, I'll have to keep the generated _ui.py and _rc.py in the same
> package. This is okay, but I would rather have them split up (e.g. a
> ui/ or perhaps forms/ package with the .ui files, and a resources/
> package for the resources). So for me, something like a

I should say, the reason I'd prefer to be able to do this is that some
of my resources are not really "UI" things per se, but more like
static application data, so it would make more sense to have a general
"resources" package for them.

Elvis

>
>   --resource-package <package>
>
> flag to pyuic5 would be a welcome addition. When used with
> --from-imports, it would result in:
>
>   from <package> import foobar_rc
>
> and when used without --from-imports, it would result in:
>
>   import <package>.foobar_rc
>
> Elvis
>
>>
>> --
>> Regards
>> Baz Walter
>> _______________________________________________
>> PyQt mailing list    PyQt at riverbankcomputing.com
>> https://www.riverbankcomputing.com/mailman/listinfo/pyqt


More information about the PyQt mailing list