PyInstaller fails to generate mayavi/qt5 application: KeyError: 'traitsui.toolkits'

Viewed 214

I want to generate an executable from my python code using mayavi and pyqt5 on windows 10. There was no issue generating the app with only pyqt5, however when I added the mayavi stuff (embedded my mayavi stuff into my pyqt GUI), pyinstaller generated the executable but it fails when I try to start it up. Below you can see the traceback of the error message. The complete application however runs when I start it up from my python IDE as pure python code. With pyinstaller I could not get it to run so far.

  Traceback (most recent call last):
  File "mayavi_qt_test.py", line 24, in <module>
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
  File "traitsui\api.py", line 256, in <module>
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
  File "traitsui\editors\__init__.py", line 16, in <module>
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
  File "traitsui\editors\api.py", line 86, in <module>
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
  File "traitsui\editors\code_editor.py", line 21, in <module>
  File "traitsui\editors\code_editor.py", line 33, in CodeEditor
  File "traits\trait_factory.py", line 40, in __call__
  File "traitsui\toolkit_traits.py", line 43, in ColorTrait
  File "traitsui\toolkit.py", line 110, in toolkit
  File "pyface\base_toolkit.py", line 282, in find_toolkit
  File "pyface\base_toolkit.py", line 216, in import_toolkit
  File "importlib_metadata\__init__.py", line 403, in __getitem__
KeyError: 'traitsui.toolkits'

I already tried to add hidden imports and additional data (pyface and traits) in the spec-file:

a = Analysis(['mayavi_qt_test.py'],
             pathex=[source_path],
             binaries=[],
             datas=[],
             hiddenimports=[
                    'importlib_metadata',
                    'importlib_resources',
                    'pyface',
                    'pyface.toolkit',
                    'traitsui',
                    'traitsui.qt4',
                    'traitsui.qt4.toolkit',
                    'traitsui.toolkit',
                    'traitsui.ui_traits',
             ],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
datas=[
    ('%s\traitsui' % source_path, 'traitsui'),
    ('%s\traitsui-7.2.1.dist-info' % source_path, 'traitsui-7.2.1.dist-info'),
    ('%s\pyface' % source_path, 'pyface'),
    ('%s\pyface-7.3.0.dist-info' % source_path, 'pyface-7.3.0.dist-info'),
]

I'm running out of ideas, also I tried the folowing solutions but could not get it to run (however the problem stated is not the same as mine, but could be related as I think I get the keyerror as smth. is missing):

potential solution 1 potential solution 1

0 Answers
Related