FS#68538 - [mayavi] fails to launch due to ImportError

Attached to Project: Community Packages
Opened by Benny (mail2benny) - Thursday, 05 November 2020, 21:30 GMT
Last edited by Sven-Hendrik Haase (Svenstaro) - Sunday, 14 March 2021, 05:17 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Andrzej Giniewicz (Giniu)
Sven-Hendrik Haase (Svenstaro)
Architecture All
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Launching mayavi2 results in:
```
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/tvtk/tvtk_base.py", line 22, in <module>
ImportError: cannot import name 'PrefixMap' from 'traits.api' (/usr/lib/python3.8/site-packages/traits/api.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/bin/mayavi2", line 33, in <module>
File "/usr/bin/mayavi2", line 25, in importlib_load_entry_point
File "/usr/lib/python3.8/importlib/metadata.py", line 77, in load
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/usr/lib/python3.8/site-packages/mayavi/scripts/mayavi2.py", line 464, in <module>
File "/usr/lib/python3.8/site-packages/mayavi/plugins/app.py", line 19, in <module>
File "/usr/lib/python3.8/site-packages/mayavi/plugins/mayavi_workbench_application.py", line 17, in <module>
File "/usr/lib/python3.8/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 146, in _import
File "/usr/lib/python3.8/site-packages/mayavi/api.py", line 2, in <module>
File "/usr/lib/python3.8/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 146, in _import
File "/usr/lib/python3.8/site-packages/mayavi/core/engine.py", line 28, in <module>
File "/usr/lib/python3.8/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 146, in _import
File "/usr/lib/python3.8/site-packages/mayavi/core/base.py", line 19, in <module>
File "/usr/lib/python3.8/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 146, in _import
File "/usr/lib/python3.8/site-packages/tvtk/pyface/tvtk_scene.py", line 20, in <module>
File "/usr/lib/python3.8/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 146, in _import
File "/usr/lib/python3.8/site-packages/tvtk/api.py", line 10, in <module>
File "/usr/lib/python3.8/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 146, in _import
File "/usr/lib/python3.8/site-packages/tvtk/tvtk_access.py", line 55, in <module>
File "/usr/lib/python3.8/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 146, in _import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
File "<frozen zipimport>", line 259, in load_module
File "tvtk_classes/tvtk_helper.py", line 2, in <module>
File "/usr/lib/python3.8/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 146, in _import
File "/usr/lib/python3.8/site-packages/tvtk/tvtk_base.py", line 26, in <module>
TypeError: function() argument 'code' must be code, not str
```
This task depends upon

Closed by  Sven-Hendrik Haase (Svenstaro)
Sunday, 14 March 2021, 05:17 GMT
Reason for closing:  Fixed
Additional comments about closing:  Fixed: python-traits 6.1.1-1
Comment by natj (natj) - Friday, 13 November 2020, 00:46 GMT
Same error here but with slightly different dependencies:

Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/tvtk/tvtk_base.py", line 22, in <module>
from traits.api import PrefixMap, PrefixList
ImportError: cannot import name 'PrefixMap' from 'traits.api' (/usr/lib/python3.8/site-packages/traits/api.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/bin/mayavi2", line 33, in <module>
sys.exit(load_entry_point('mayavi==4.7.2', 'gui_scripts', 'mayavi2')())
File "/usr/bin/mayavi2", line 25, in importlib_load_entry_point
return next(matches).load()
File "/usr/lib/python3.8/importlib/metadata.py", line 77, in load
module = import_module(match.group('module'))
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/usr/lib/python3.8/site-packages/mayavi/scripts/mayavi2.py", line 464, in <module>
from mayavi.plugins.app import Mayavi, setup_logger
File "/usr/lib/python3.8/site-packages/mayavi/plugins/app.py", line 19, in <module>
from .mayavi_workbench_application import MayaviWorkbenchApplication
File "/usr/lib/python3.8/site-packages/mayavi/plugins/mayavi_workbench_application.py", line 17, in <module>
import mayavi.api
File "/usr/lib/python3.8/site-packages/mayavi/api.py", line 2, in <module>
from mayavi.core.engine import Engine
File "/usr/lib/python3.8/site-packages/mayavi/core/engine.py", line 28, in <module>
from mayavi.core.base import Base
File "/usr/lib/python3.8/site-packages/mayavi/core/base.py", line 19, in <module>
from tvtk.pyface.tvtk_scene import TVTKScene
File "/usr/lib/python3.8/site-packages/tvtk/pyface/tvtk_scene.py", line 20, in <module>
from tvtk.api import tvtk
File "/usr/lib/python3.8/site-packages/tvtk/api.py", line 10, in <module>
from tvtk.tvtk_access import tvtk
File "/usr/lib/python3.8/site-packages/tvtk/tvtk_access.py", line 55, in <module>
from tvtk.tvtk_classes import tvtk_helper
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
File "<frozen zipimport>", line 259, in load_module
File "tvtk_classes/tvtk_helper.py", line 2, in <module>
File "/usr/lib/python3.8/site-packages/tvtk/tvtk_base.py", line 26, in <module>
class PrefixMap(Trait):
TypeError: function() argument 'code' must be code, not str
Comment by loqs (loqs) - Friday, 13 November 2020, 19:18 GMT
Simplest fix is to update python-traits to 6.1.0 or 6.1.1 which would provide PrefixMap and avoid the broken except block.
Comment by Sven-Hendrik Haase (Svenstaro) - Tuesday, 17 November 2020, 06:23 GMT
Andrzej, could you try updating your package python-traits so we can make this issue go away?
Comment by Anonymous (reallybmn) - Wednesday, 18 November 2020, 20:42 GMT
I've also been affected by this bug. I confirm that updating python-traits to 6.1.1 fixes the problem. Would it be possible to do it please?
Comment by siamak (siamak) - Monday, 14 December 2020, 17:27 GMT
Miyavi still doesn't work, I receive the error below:

In [2]: from mayavi import mlab
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/usr/lib/python3.9/site-packages/tvtk/tvtk_base.py in <module>
21 try:
---> 22 from traits.api import PrefixMap, PrefixList
23 except ImportError: # use deprecated name

ImportError: cannot import name 'PrefixMap' from 'traits.api' (/usr/lib/python3.9/site-packages/traits/api.py)

During handling of the above exception, another exception occurred:

TypeError Traceback (most recent call last)
<ipython-input-2-67847bc6bfd0> in <module>
----> 1 from mayavi import mlab

/usr/lib/python3.9/site-packages/mayavi/mlab.py in <module>
14 # Mayavi imports
15 from mayavi.core.common import process_ui_events
---> 16 from mayavi.tools.camera import view, roll, yaw, pitch, move
17 from mayavi.tools.figure import figure, clf, gcf, savefig, \
18 draw, sync_camera, close, screenshot

/usr/lib/python3.9/site-packages/mayavi/tools/camera.py in <module>
22 # We can't use gcf, as it creates a circular import in camera management
23 # routines.
---> 24 from .engine_manager import get_engine
25
26

/usr/lib/python3.9/site-packages/mayavi/tools/engine_manager.py in <module>
11 # Local imports
12 from mayavi.preferences.api import preference_manager
---> 13 from mayavi.core.registry import registry
14 from mayavi.core.engine import Engine
15 from mayavi.core.off_screen_engine import OffScreenEngine

/usr/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py in _import(name, *args, **kwargs)
140 flag = -1
141 pyside_feature_dict[importing_module] = flag
--> 142 return original_import(name, *args, **kwargs)
143
144 _is_initialized = False

/usr/lib/python3.9/site-packages/mayavi/core/registry.py in <module>
14
15 # Local imports.
---> 16 from mayavi.core.metadata import Metadata, import_symbol
17
18 # A logger for this module.

/usr/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py in _import(name, *args, **kwargs)
140 flag = -1
141 pyside_feature_dict[importing_module] = flag
--> 142 return original_import(name, *args, **kwargs)
143
144 _is_initialized = False

/usr/lib/python3.9/site-packages/mayavi/core/metadata.py in <module>
9 # Enthought library imports.
10 from traits.api import HasTraits, Str, Callable, Either, List, Instance
---> 11 from mayavi.core.pipeline_info import PipelineInfo
12
13

/usr/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py in _import(name, *args, **kwargs)
140 flag = -1
141 pyside_feature_dict[importing_module] = flag
--> 142 return original_import(name, *args, **kwargs)
143
144 _is_initialized = False

/usr/lib/python3.9/site-packages/mayavi/core/pipeline_info.py in <module>
10 from traits.api import HasTraits, Enum, List
11
---> 12 from .utils import get_tvtk_dataset_name
13
14 # The list of datasets supported.

/usr/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py in _import(name, *args, **kwargs)
140 flag = -1
141 pyside_feature_dict[importing_module] = flag
--> 142 return original_import(name, *args, **kwargs)
143
144 _is_initialized = False

/usr/lib/python3.9/site-packages/mayavi/core/utils.py in <module>
4 from vtk.numpy_interface import algorithms as algs
5
----> 6 from tvtk.api import tvtk
7
8

/usr/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py in _import(name, *args, **kwargs)
140 flag = -1
141 pyside_feature_dict[importing_module] = flag
--> 142 return original_import(name, *args, **kwargs)
143
144 _is_initialized = False

/usr/lib/python3.9/site-packages/tvtk/api.py in <module>
8
9 # The TVTK pseudo-module.
---> 10 from tvtk.tvtk_access import tvtk
11
12 # Handy colors from VTK.

/usr/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py in _import(name, *args, **kwargs)
140 flag = -1
141 pyside_feature_dict[importing_module] = flag
--> 142 return original_import(name, *args, **kwargs)
143
144 _is_initialized = False

/usr/lib/python3.9/site-packages/tvtk/tvtk_access.py in <module>
53
54 # Now setup TVTK itself.
---> 55 from tvtk.tvtk_classes import tvtk_helper
56 tvtk = tvtk_helper.TVTK()

/usr/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py in _import(name, *args, **kwargs)
140 flag = -1
141 pyside_feature_dict[importing_module] = flag
--> 142 return original_import(name, *args, **kwargs)
143
144 _is_initialized = False

/usr/lib/python3.9/importlib/_bootstrap.py in _find_and_load(name, import_)

/usr/lib/python3.9/importlib/_bootstrap.py in _find_and_load_unlocked(name, import_)

/usr/lib/python3.9/importlib/_bootstrap.py in _load_unlocked(spec)

/usr/lib/python3.9/importlib/_bootstrap.py in _load_backward_compatible(spec)

<frozen zipimport> in load_module(self, fullname)

/usr/lib/python3.9/site-packages/tvtk/tvtk_classes.zip/tvtk_classes/tvtk_helper.pyc in <module>

/usr/lib/python3.9/site-packages/shiboken2/files.dir/shibokensupport/__feature__.py in _import(name, *args, **kwargs)
140 flag = -1
141 pyside_feature_dict[importing_module] = flag
--> 142 return original_import(name, *args, **kwargs)
143
144 _is_initialized = False

/usr/lib/python3.9/site-packages/tvtk/tvtk_base.py in <module>
24 from traits.api import TraitPrefixMap, TraitPrefixList, Trait
25
---> 26 class PrefixMap(Trait):
27 def __init__(self, map, *args, **kwargs):
28 if args:

TypeError: function() argument 'code' must be code, not str
Comment by Andrzej Giniewicz (Giniu) - Wednesday, 23 December 2020, 09:01 GMT
Hi there, sorry - due to covid pandemic I don't have access to my Arch box right now. Hope it will change soon.
Comment by Sven-Hendrik Haase (Svenstaro) - Wednesday, 24 February 2021, 10:49 GMT
Hey, is there an update on this Andrzej?

Loading...