Python/Mayavi/VTK错误:导入的VTK版本与TVTK类不匹配

Python/Mayavi/VTK错误:导入的VTK版本与TVTK类不匹配,python,visualization,vtk,mayavi,Python,Visualization,Vtk,Mayavi,当我使用mayavi(4.3.1)可视化网格时,它会发出以下警告: 警告:导入的VTK版本(5.1)与使用的版本不匹配 构建TVTK类(6.3)。这可能会引起问题。 请重建TVTK 我的系统: MS Windows 64位,Anaconda 4.3.1(最新版本) $conda列表qt #位于C:\ProgramData\Anaconda2的环境中的包: # pyqt 4.11.4 py27_7蟒蛇 qt 4.8.7 vc9_9[vc9]蟒蛇 QT0.4.3 py27_0 qtconsol

当我使用mayavi(4.3.1)可视化网格时,它会发出以下警告:


警告:导入的VTK版本(5.1)与使用的版本不匹配 构建TVTK类(6.3)。这可能会引起问题。 请重建TVTK


我的系统: MS Windows 64位,Anaconda 4.3.1(最新版本)


$conda列表qt
#位于C:\ProgramData\Anaconda2的环境中的包:
#
pyqt 4.11.4 py27_7蟒蛇
qt 4.8.7 vc9_9[vc9]蟒蛇
QT0.4.3 py27_0
qtconsole 4.2.1 py27_0蟒蛇
qtpy 1.2.1 py27_0
$conda列表vtk
#位于C:\ProgramData\Anaconda2的环境中的包:
#
vtk 5.10.1 py27_0水蟒
$conda list mayavi
#位于C:\ProgramData\Anaconda2的环境中的包:
#
马雅维4.5.0
我搜索过论坛,但大多数答案都认为它是4年前VTK中的一个bug,例如。我不确定它是否有一个坚定的解决办法。在我的电脑中,确实有另一种版本的VTK(版本> 6),但它是C++的,与Python和Mayavi无关。 我在运行Maya示例代码时遇到的错误如下(警告消息非常混乱,因为我的VTK是5.10(如上所述),奇怪的是5.1版在哪里)


>>>运行文件('D:/flex\u 8state/code/spherical\u harmonics.py',wdir='D:/flex\u 8state/code')
********************************************************************************
警告:导入的VTK版本(5.1)与使用的版本不匹配
构建TVTK类(6.3)。这可能会引起问题。
请重建TVTK。
********************************************************************************
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\ProgramData\Anaconda2\lib\site packages\spyder\utils\site\sitecustomize.py”,第866行,在runfile中
execfile(文件名、命名空间)
文件“C:\ProgramData\Anaconda2\lib\site packages\spyder\utils\site\sitecustomize.py”,执行文件第87行
exec(编译(脚本文本,文件名,'exec'),glob,loc)
文件“D:/flex_8state/code/spherical_harmonics.py”,第36行
图(1,bgcolor=(1,1,1),fgcolor=(0,0,0),size=(400300))
文件“C:\ProgramData\Anaconda2\lib\site packages\mayavi\tools\figure.py”,图中第85行
引擎。新场景(名称=名称,大小=大小)
文件“C:\ProgramData\Anaconda2\lib\site packages\apptools\scripting\recordable.py”,第45行,在\u包装中
结果=函数(*参数,**kw)
文件“C:\ProgramData\Anaconda2\lib\site packages\mayavi\core\engine.py”,第452行,在新场景中
查看器=self.scene\u factory(**factory\u kwargs)
文件“C:\ProgramData\Anaconda2\lib\site packages\mayavi\core\ui\mayavi\u scene.py”,第89行,在查看器工厂中
viewer.open()
文件“C:\ProgramData\Anaconda2\lib\site packages\pyface\i\u window.py”,第166行,处于打开状态
self._create()
文件“C:\ProgramData\Anaconda2\lib\site packages\pyface\ui\qt4\application\u window.py”,第121行,位于创建
contents=self.\u创建内容(self.control)
文件“C:\ProgramData\Anaconda2\lib\site packages\tvtk\tools\ivtk.py”,第404行,在创建内容中
self.scene=self.\u scene\u工厂(父级)
文件“C:\ProgramData\Anaconda2\lib\site packages\mayavi\core\ui\mayavi\u scene.py”,第68行,在mayavi\u scene\u工厂中
s=MayaviScene(父级,立体声=p['stereo'])
文件“C:\ProgramData\Anaconda2\lib\site packages\tvtk\pyface\ui\qt4\detained\u scene.py”,第59行,在uu init中__
超级(装饰场景,自我)。\uuuu初始(父,**特征)
文件“C:\ProgramData\Anaconda2\lib\site packages\tvtk\pyface\ui\qt4\scene.py”,第325行,在u init中__
self.picker=picker.picker(self)
文件“C:\ProgramData\Anaconda2\lib\site packages\tvtk\pyface\picker.py”,第260行,在\uuu init中__
配置_输入(self.p_映射器、self.p_源)
文件“C:\ProgramData\Anaconda2\lib\site packages\tvtk\common.py”,第88行,在configure\u输入中
inp.input=op.output
文件“C:\ProgramData\Anaconda2\lib\site packages\traits\traits\u handlers.py”,第104行,只读
名称、类别(对象))
traits.trait_errors.TraitError:PolyDataMapper实例的“输入”特性为“只读”。

经过三天的努力,我找到了一个解决办法,我在这里发布了一篇文章,这将对类似的受害者有所帮助。我强烈建议Mayavi/TVTK的开发人员更加关注这个bug

这篇文章对我帮助很大。相同的初始安装,然后将VTK从5更新到6(我的初始帖子),如中所列。固有错误源于python/VTK版本中更改的SetInputConnection/SetInputData接口

主要问题

  • 在我的笔记本电脑中,同样的安装(如上图所示)的确如此 作品我不知道为什么
  • 在我的电脑中,在到达解决方法之前,当我 conda直接安装的VTK-6,不起作用并提示 “…缺少模块”(抱歉,我没有记录这些错误)

  • 接受自己的答案总是可以的。当未来的读者(像我一样)搜索时,看到这个问题有一个被接受的答案是一个很好的指标,会带来更多的读者。谢谢你!
    <code>
    $ conda list qt
    # packages in environment at C:\ProgramData\Anaconda2:
    #
    pyqt                      4.11.4                   py27_7    anaconda
    qt                        4.8.7                     vc9_9  [vc9]  anaconda
    qtawesome                 0.4.3                    py27_0
    qtconsole                 4.2.1                    py27_0    anaconda
    qtpy                      1.2.1                    py27_0
    
    $ conda list vtk
    # packages in environment at C:\ProgramData\Anaconda2:
    #
    vtk                       5.10.1                   py27_0    anaconda
    
    $ conda list mayavi
    # packages in environment at C:\ProgramData\Anaconda2:
    #
    mayavi                    4.5.0                     <pip>
    </code>
    
    <code>
    >>> runfile('D:/flex_8state/code/spherical_harmonics.py', wdir='D:/flex_8state/code')
    ********************************************************************************
    WARNING: Imported VTK version (5.1) does not match the one used
             to build the TVTK classes (6.3). This may cause problems.
             Please rebuild TVTK.
    ********************************************************************************
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\ProgramData\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
        execfile(filename, namespace)
      File "C:\ProgramData\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 87, in execfile
        exec(compile(scripttext, filename, 'exec'), glob, loc)
      File "D:/flex_8state/code/spherical_harmonics.py", line 36, in <module>
        mlab.figure(1, bgcolor=(1, 1, 1), fgcolor=(0, 0, 0), size=(400, 300))
      File "C:\ProgramData\Anaconda2\lib\site-packages\mayavi\tools\figure.py", line 85, in figure
        engine.new_scene(name=name, size=size)
      File "C:\ProgramData\Anaconda2\lib\site-packages\apptools\scripting\recordable.py", line 45, in _wrapper
        result = func(*args, **kw)
      File "C:\ProgramData\Anaconda2\lib\site-packages\mayavi\core\engine.py", line 452, in new_scene
        viewer = self.scene_factory(**factory_kwargs)
      File "C:\ProgramData\Anaconda2\lib\site-packages\mayavi\core\ui\mayavi_scene.py", line 89, in viewer_factory
        viewer.open()
      File "C:\ProgramData\Anaconda2\lib\site-packages\pyface\i_window.py", line 166, in open
        self._create()
      File "C:\ProgramData\Anaconda2\lib\site-packages\pyface\ui\qt4\application_window.py", line 121, in _create
        contents = self._create_contents(self.control)
      File "C:\ProgramData\Anaconda2\lib\site-packages\tvtk\tools\ivtk.py", line 404, in _create_contents
        self.scene = self._scene_factory(parent)
      File "C:\ProgramData\Anaconda2\lib\site-packages\mayavi\core\ui\mayavi_scene.py", line 68, in mayavi_scene_factory
        s = MayaviScene(parent, stereo=p['stereo'])
      File "C:\ProgramData\Anaconda2\lib\site-packages\tvtk\pyface\ui\qt4\decorated_scene.py", line 59, in __init__
        super(DecoratedScene, self).__init__(parent, **traits)
      File "C:\ProgramData\Anaconda2\lib\site-packages\tvtk\pyface\ui\qt4\scene.py", line 325, in __init__
        self.picker = picker.Picker(self)
      File "C:\ProgramData\Anaconda2\lib\site-packages\tvtk\pyface\picker.py", line 260, in __init__
        configure_input(self.p_mapper, self.p_source)
      File "C:\ProgramData\Anaconda2\lib\site-packages\tvtk\common.py", line 88, in configure_input
        inp.input = op.output
      File "C:\ProgramData\Anaconda2\lib\site-packages\traits\trait_handlers.py", line 104, in _read_only
        name, class_of( object ) )
    traits.trait_errors.TraitError: The 'input' trait of a PolyDataMapper instance is 'read only'.
    </code>