安装 mayavi 出错,退出状态为 -11

installing mayavi errors out with exit status -11

在 Fedora 31 上,我尝试使用 pip 安装 mayavi

pip install mayavi

但是出现如下错误

  Building wheel for mayavi (setup.py) ... error
  ERROR: Command errored out with exit status -11:
   command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-4s7scony/mayavi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-4s7scony/mayavi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-ggg3s_hz
       cwd: /tmp/pip-install-4s7scony/mayavi/
  Complete output (55 lines):
  running bdist_wheel
  running build
  ----------------------------------------------------------------------
  Building TVTK classes... vtkContextDevice2D: Ignoring method: Get/SetViewportRect
  default: [0, 0, 0, 0], range: None
  vtkContextDevice2D: Ignoring method: Get/SetViewportSize
  default: [0, 0], range: None
  vtkEventDataForDevice: Ignoring method: Get/SetAction
  default: -1, range: None
  vtkEventDataForDevice: Ignoring method: Get/SetDevice
  default: -1, range: None
  vtkFXAAOptions: Ignoring method: Get/SetDebugOptionValue
  default: 0, range: None
  vtkIncrementalForceLayout: Ignoring method: Get/SetGravityPoint
  default: [200.0, 200.0], range: None
  vtkOpenGLBufferObject: Ignoring method: Get/SetType
  default: 0, range: None
  vtkOpenGLFXAAFilter: Ignoring method: Get/SetDebugOptionValue
  default: 0, range: None
  vtkRenderWidget: Ignoring method: Get/SetPosition
  default: [0, 0], range: None
  vtkRenderWidget: Ignoring method: Get/SetSize
  default: [300, 300], range: None
  vtkShader: Ignoring method: Get/SetType
  default: 3, range: None
  vtkVolumeTexture: Ignoring method: Get/SetPartitions
  default: [1, 1, 1], range: None
  vtkChartMatrix: Ignoring method: Get/SetGutter
  default: [15.0, 15.0], range: None
  vtkChartMatrix: Ignoring method: Get/SetSize
  default: [0, 0], range: None
  vtkContextArea: Ignoring method: Get/SetDrawAreaBounds
  default: [0.0, 0.0, 300.0, 300.0], range: None
  vtkContextArea: Ignoring method: Get/SetDrawAreaResizeBehavior
  default: 0, range: None
  vtkContextArea: Ignoring method: Get/SetFixedMargins
  default: [0, 0, 0, 0], range: None
  vtkContextArea: Ignoring method: Get/SetFixedRect
  default: [0, 0, 300, 300], range: None
  vtkContextArea: Ignoring method: Get/SetGeometry
  default: [0, 0, 300, 300], range: None
  vtkImplicitProjectOnPlaneDistance: Ignoring method: Get/SetNorm
  default: 2, range: None
  vtkOpenGLVertexBufferObject: Ignoring method: Get/SetCoordShiftAndScaleMethod
  default: 0, range: None
  vtkSimple3DCirclesStrategy: Ignoring method: Get/SetMarkedValue
  default: (invalid), range: None
  vtkArrayNorm: Ignoring method: Get/SetWindow
  default: [0, 9223372036854775807), range: None
  vtkChart: Ignoring method: Get/SetSize
  default: [0.0, 0.0, 0.0, 0.0], range: None
  vtkChartXYZ: Ignoring method: Get/SetAxisColor
  default: [0, 0, 0, 255], range: None
  Warning: We cannot determine the trait type of vtkHigherOrderHexahedron.Order
  Warning: We cannot determine the trait type of vtkHigherOrderQuadrilateral.Order
  ----------------------------------------
  ERROR: Failed building wheel for mayavi
  Running setup.py clean for mayavi
Failed to build mayavi
Installing collected packages: mayavi
    Running setup.py install for mayavi ... error
    ERROR: Command errored out with exit status -11:
     command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-4s7scony/mayavi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-4s7scony/mayavi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-wln7h1zu/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/imsantos/.local/include/python3.7m/mayavi
         cwd: /tmp/pip-install-4s7scony/mayavi/
    Complete output (55 lines):
    running install
    running build
    ----------------------------------------------------------------------
    Building TVTK classes... vtkContextDevice2D: Ignoring method: Get/SetViewportRect
    default: [0, 0, 0, 0], range: None
    vtkContextDevice2D: Ignoring method: Get/SetViewportSize
    default: [0, 0], range: None
    vtkEventDataForDevice: Ignoring method: Get/SetAction
    default: -1, range: None
    vtkEventDataForDevice: Ignoring method: Get/SetDevice
    default: -1, range: None
    vtkFXAAOptions: Ignoring method: Get/SetDebugOptionValue
    default: 0, range: None
    vtkIncrementalForceLayout: Ignoring method: Get/SetGravityPoint
    default: [200.0, 200.0], range: None
    vtkOpenGLBufferObject: Ignoring method: Get/SetType
    default: 0, range: None
    vtkOpenGLFXAAFilter: Ignoring method: Get/SetDebugOptionValue
    default: 0, range: None
    vtkRenderWidget: Ignoring method: Get/SetPosition
    default: [0, 0], range: None
    vtkRenderWidget: Ignoring method: Get/SetSize
    default: [300, 300], range: None
    vtkShader: Ignoring method: Get/SetType
    default: 3, range: None
    vtkVolumeTexture: Ignoring method: Get/SetPartitions
    default: [1, 1, 1], range: None
    vtkChartMatrix: Ignoring method: Get/SetGutter
    default: [15.0, 15.0], range: None
    vtkChartMatrix: Ignoring method: Get/SetSize
    default: [0, 0], range: None
    vtkContextArea: Ignoring method: Get/SetDrawAreaBounds
    default: [0.0, 0.0, 300.0, 300.0], range: None
    vtkContextArea: Ignoring method: Get/SetDrawAreaResizeBehavior
    default: 0, range: None
    vtkContextArea: Ignoring method: Get/SetFixedMargins
    default: [0, 0, 0, 0], range: None
    vtkContextArea: Ignoring method: Get/SetFixedRect
    default: [0, 0, 300, 300], range: None
    vtkContextArea: Ignoring method: Get/SetGeometry
    default: [0, 0, 300, 300], range: None
    vtkImplicitProjectOnPlaneDistance: Ignoring method: Get/SetNorm
    default: 2, range: None
    vtkOpenGLVertexBufferObject: Ignoring method: Get/SetCoordShiftAndScaleMethod
    default: 0, range: None
    vtkSimple3DCirclesStrategy: Ignoring method: Get/SetMarkedValue
    default: (invalid), range: None
    vtkArrayNorm: Ignoring method: Get/SetWindow
    default: [0, 9223372036854775807), range: None
    vtkChart: Ignoring method: Get/SetSize
    default: [0.0, 0.0, 0.0, 0.0], range: None
    vtkChartXYZ: Ignoring method: Get/SetAxisColor
    default: [0, 0, 0, 255], range: None
    Warning: We cannot determine the trait type of vtkHigherOrderHexahedron.Order
    Warning: We cannot determine the trait type of vtkHigherOrderQuadrilateral.Order
    ----------------------------------------
ERROR: Command errored out with exit status -11: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-4s7scony/mayavi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-4s7scony/mayavi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-wln7h1zu/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/imsantos/.local/include/python3.7m/mayavi Check the logs for full command output.

执行 python -c "import vtk" 不会引发错误。与 PyQt5.

相同

运行

import vtk
vtk.VTK_SOURCE_VERSION

表示我使用的是vtk 9.0.1版本。

$PYTHONPATH 为空。

运行 因为 sudo 不会更改错误。我也试过 python3 -m pip install mayavi 结果相同。

如何使用 pip 安装 mayavi?

我在 Ubuntu 20.04 上遇到了同样的问题。我无法从 pypi 安装。我必须通过 git:

获取源代码并安装
pip install git+https://github.com/enthought/mayavi.git

这里有一个类似的问题installing mayavi with pip。问题的提示是 vtk 特征。

无论出于何种原因,可以通过以下方式找到 vtk 版本:

import vtk
vtk.VTK_SOURCE_VERSION

问题在于您使用的 vtk 版本。我遇到了同样的问题,以下内容对我有用:

pip3 install vtk==8.1.2

请注意,此版本的 vtk 不适用于 Python 的 3.8 及更高版本,因此我不确定如果您使用的是 3.8,有什么解决方法。我用的是 3.7.

然后,再次尝试安装 mayavi。

pip3 install mayavi