Mayavi: рдорд╛рдпрд╛рд╡реА рдСрдл рд╕реНрдХреНрд░реАрди рд░реЗрдВрдбрд░рд┐рдВрдЧ VTK 7.1.0 . рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдЬрдире░ 2017  ┬╖  21рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: enthought/mayavi

рдореИрдВ MesaOS рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде vtk рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╣реЗрдбрд▓реЗрд╕ рдореЛрдб рдореЗрдВ рдПрдХ рдЬреНрдпреВрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдкреИрдХреЗрдЬ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдХреБрдЫ рдФрд░ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
https://github.com/conda-forge/vtk-feedstock/issues/20

рдЬрдм рдореИрдВ рд╡реАрдЯреАрдХреЗ рдСрдл рд╕реНрдХреНрд░реАрди рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

#! ./local/bin/python

from vtk import (vtkSphereSource, vtkPolyDataMapper, vtkActor, vtkRenderer,
        vtkRenderWindow, vtkWindowToImageFilter, vtkPNGWriter)

sphereSource = vtkSphereSource()
mapper = vtkPolyDataMapper()
mapper.SetInputConnection(sphereSource.GetOutputPort())

actor = vtkActor()
actor.SetMapper(mapper)

renderer = vtkRenderer()
renderWindow = vtkRenderWindow()
renderWindow.SetOffScreenRendering(1)
renderWindow.AddRenderer(renderer)

renderer.AddActor(actor)
renderer.SetBackground(1, 1, 1)

renderWindow.Render()

windowToImageFilter = vtkWindowToImageFilter()
windowToImageFilter.SetInput(renderWindow)
windowToImageFilter.Update()

writer = vtkPNGWriter()
writer.SetFileName("sphere.png")
writer.SetInputConnection(windowToImageFilter.GetOutputPort())
writer.Write()

рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдорд╛рдпрд╛рд╡реА рдСрдл рд╕реНрдХреНрд░реАрди рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ:

# Author: Prabhu Ramachandran <[email protected]>
# Copyright (c) 2007, Enthought, Inc.
# License: BSD Style.

from os.path import join, abspath, dirname

# The offscreen Engine.
from mayavi.api import OffScreenEngine

# Usual MayaVi imports
from mayavi.scripts.util import get_data_dir
from mayavi.sources.api import VTKXMLFileReader
from mayavi.modules.api import Outline, ScalarCutPlane, Streamline


def main():
    # Create the MayaVi offscreen engine and start it.
    e = OffScreenEngine()
    # Starting the engine registers the engine with the registry and
    # notifies others that the engine is ready.
    e.start()

    # Create a new scene.
    win = e.new_scene()

    # Now setup a normal MayaVi pipeline.
    src = VTKXMLFileReader()
    src.initialize(join(get_data_dir(dirname(abspath(__file__))),
                        'fire_ug.vtu'))
    e.add_source(src)
    e.add_module(Outline())
    e.add_module(ScalarCutPlane())
    e.add_module(Streamline())
    win.scene.isometric_view()
    # Change the size argument to anything you want.
    win.scene.save('offscreen.png', size=(800, 800))


if __name__ == '__main__':
    main()

рдореБрдЭреЗ рдЬреЛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ:

ERROR: In ../Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx, line 301
vtkXOpenGLRenderWindow (0x30ced20): bad X server connection. DISPLAY=Aborted

рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдл рд╕реНрдХреНрд░реАрди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди VTK рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдВ рдЦреБрдж рдорд╛рдпрд╛рд╡реА рдХреЗ рдЕрдВрджрд░ рд╡реАрдЯреАрдХреЗ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ tvtk_access.py рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдлрд┐рд░ рднреА рдореБрдЭреЗ рдСрдлрд╕реНрдХреНрд░реАрди рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рд╕реАрдзреЗ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд░рд┐рдореЛрдЯ рдЬреБрдкрд┐рдЯрд░-рд╣рдм рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЬреБрдкрд┐рдЯрд░-рдиреЛрдЯрдмреБрдХ рдореЗрдВ рдорд╛рдпрд╛рд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдХрд╛рдлреА рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдереАред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдХреЛрдИ рдПрдХреНрд╕ рд╕рд░реНрд╡рд░ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ xvfbwrapper рдФрд░ Xvfb рдмреИрдХ-рдПрдВрдб рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ред рдорд╛рдпрд╛рд╡реА рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╢реБрд░реВ рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг

#The following 3 lines must be before doing anything with mayavi (even importing)
from xvfbwrapper import Xvfb
vdisplay = Xvfb(width=1920, height=1080)
vdisplay.start()

from mayavi import mlab
mlab.init_notebook()
s = mlab.test_plot3d()
s

рдпрджрд┐ рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдиреБрдЕрд▓ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рд╕рднреА 21 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ ETS_TOOLKIT='null' рд╕реЗрдЯ рдХрд░рдХреЗ рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

>>> from mayavi import mlab
>>> mlab.options.offscreen = True
>>> mlab.test_plot3d()
ERROR: In ../Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx, line 301
vtkXOpenGLRenderWindow (0x2e027d0): bad X server connection. DISPLAY=Aborted (core dumped)

рдпрджрд┐ ETS_TOOLKIT='null' рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдпрд╛рдд рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВ рдПрдХ рджреГрд╢реНрдп new_scene() рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдКрдкрд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ

@ рдЬрд╛рди-рдЬрд╛рдирд╕реЗрди - рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдирд╡реАрдирддрдо рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрднреА рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЛ рдЕрднреА рднреА export ETS_TOOLKIT=null рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рд▓реЗрдХрд┐рди рдмрд╛рдХреА рдХреЛ рдЕрднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рдСрд╕реНрдореЗрд╕рд╛ рдХреЛрдВрдбрд╛-рдлреЛрд░реНрдЬ рд╡реАрдЯреАрдХреЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдПрдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ env рд╕реЗрдЯрдЕрдк рдареАрдХ рд╕реЗ рд╣реИред

рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рдерд╛:

$ export ETS_TOOLKIT='null'
$ conda create -n mayavi_osmesa -c conda-forge mesalib pyqt numpy vtk
$ pip install git+https://github.com/enthought/mayavi
$ python -c "from mayavi import mlab; mlab.options.offscreen=True; mlab.test_plot3d(); mlab.savefig('test.png')"
ERROR: In ../Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx, line 445
vtkXOpenGLRenderWindow (0x1c58c80): bad X server connection. DISPLAY=Aborted (core dumped)

рдареАрдХ рд╣реИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдУрдкреА рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╢реБрджреНрдз рд╡реАрдЯреАрдХреЗ рдЙрджрд╛рд╣рд░рдг рдпрд╛ рддреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдПрдирд╡реА рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред рдореБрдЭреЗ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рд╕реАрдзреЗ pip install git+https://github.com/enthought/mayavi рд╕рд╛рде рдорд┐рд▓рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрд╣реАрдВ рд╡реАрдЯреАрдХреЗ рдореЗрдВ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд╛рдкрд┐рдд рд╡реАрдЯреАрдХреЗ рдореЗрдВ vtkOSOpenGLRenderWindow , рдЕрд░реНрдерд╛рдд
import vtk; print(hasattr(vtk, 'vtkOSOpenGLRenderWindow')) ред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рд╡реАрдЯреАрдХреЗ рдХреЛ рдСрд╕реНрдореЗрд╕рд╛ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЙрд╕рдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдореМрдЬреВрдж рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ ?!

рдЬрдм рд╡реАрдЯреАрдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ VTK_OPENGL_HAS_OSMESA рдХреЛ рдЪрд╛рд▓реВ рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╣рдореНрдо, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдВрдбрд╛-рдлреЛрд░реНрдЬ рдСрд╕реНрдореЗрд╕рд╛ рдкреИрдХреЗрдЬ рдХреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рд╡рд╣рд╛рдВ рдЬрд╛рдХрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓реВрдВрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирдП рдореЗрд╕рд╛ рд░рд┐рд▓реАрдЬ рдореЗрд╕рд╛ рдФрд░ рдУрд╕реНрдореЗрд╕рд╛ рджреЛрдиреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╡реАрдЯреАрдХреЗ рд░рд┐рд▓реАрдЬ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдУрд╕реНрдореЗрд╕рд╛ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм vtk_use_x рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдЪреАрдЬреЗрдВ рдмрджрд▓ рд╕рдХрддреА рдереАрдВ...

рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЖрдк VTK-7.x рдЬреИрд╕реЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЬрдм рднреА рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛?

рдореБрдЭреЗ рдЙрдмрдВрдЯреВ 18, рд╡реАрдЯреАрдХреЗ 8.1.2, рдорд╛рдпрд╛рд╡реА 4.6.2 рдкрд░ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ

рдореЗрд░реА рдорд╛рдпрд╛рд╡реА рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛? рд╕рд░реНрд╡рд░ рдореЗрдВ рдорд╛рдпрд╛рд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рд░рд┐рдореЛрдЯ рдЬреБрдкрд┐рдЯрд░-рд╣рдм рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЬреБрдкрд┐рдЯрд░-рдиреЛрдЯрдмреБрдХ рдореЗрдВ рдорд╛рдпрд╛рд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдХрд╛рдлреА рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдереАред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдХреЛрдИ рдПрдХреНрд╕ рд╕рд░реНрд╡рд░ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ xvfbwrapper рдФрд░ Xvfb рдмреИрдХ-рдПрдВрдб рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ред рдорд╛рдпрд╛рд╡реА рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╢реБрд░реВ рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг

#The following 3 lines must be before doing anything with mayavi (even importing)
from xvfbwrapper import Xvfb
vdisplay = Xvfb(width=1920, height=1080)
vdisplay.start()

from mayavi import mlab
mlab.init_notebook()
s = mlab.test_plot3d()
s

рдпрджрд┐ рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдиреБрдЕрд▓ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@ max9111 рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рдХрд░рдирд╛ рдпрд╛рдж рд╣реИ? рдореИрдВрдиреЗ xvfbwrapper рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд▓реЗрдХрд┐рди -X рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ ssh'ing рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

рддреНрд░реБрдЯрд┐: ../Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx, рд▓рд╛рдЗрди 606 рдореЗрдВ
vtkXOpenGLRenderWindow (0x55b43e61d590): GLX рдкреНрд░рд╕рдВрдЧ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ред рдЧрд░реНрднрдкрд╛рддред

@tjiagoM рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрд╡рдпрдВ xfb рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рднреВрд▓ рдЧрдП рд╣реЛрдВ (sudo apt-get install xvfb)?

@ max9111 рдУрд╣, рдирд╣реАрдВ, рд╢реБрд░реВ рдореЗрдВ рдореИрдВрдиреЗ рд╡рд╣ рдЧрд▓рддреА рдХреА рдереА, рд▓реЗрдХрд┐рди рд╡реЗ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗрдВрдЧреЗ рдХрд┐ рдХреЛрдИ xvfb рдирд╣реАрдВ рдорд┐рд▓рд╛/рд╕рдХреНрд░рд┐рдп (рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣)

@ max9111 рдореИрдВ рдЙрд╕реА рд╕реЗрдЯ-рдЕрдк рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдорд╛рдпрд╛рд╡реА рд░рд┐рдореЛрдЯ рдЬреНрдпреВрдкрд┐рдЯрд░рд╣рдм рдкрд░ред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдм рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдирдореВрдирд╛ рдбреЙрдХрд░ рдЫрд╡рд┐ рд╣реИ? рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ xvfbwrapper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЪрд╛рд▓ рдирд╣реАрдВ рдЪрд▓реАред рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!

@mirestrepo
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдбреЙрдХрд░ рдЫрд╡рд┐ рдирд╣реАрдВ рд╣реИред

рдореЗрд░рд╛ рд╕реЗрдЯрдЕрдк рд╣реИ:

  • рд░рд┐рдореЛрдЯ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдкрд░ рдХреБрдмрдВрдЯреВ 18.04 (рд╡рд░реНрдЪреБрдЕрд▓ рдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЬреЛ CentOS7 рдкрд░ рдЪрд▓рддреА рд╣реИред

  • рд▓рд┐рдЯрд▓реЗрд╕реНрдЯ рдЬреБрдкрд┐рдЯрд░рд╣рдм рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛

  • Jupyterhub рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВ (рдкреЛрд░реНрдЯ-рдлрд╝реЙрд░рд╡рд░реНрдбрд┐рдВрдЧ, рдлрд╝рд╛рдпрд░рд╡реЙрд▓рд╕реЗрдЯрдЕрдк)

  • рдХреА рддрд░рд╣ рдЖрднрд╛рд╕реА рдорд╢реАрди рдореЗрдВ XfVB рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдХрд┐
    рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдПрдХреНрд╕-рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд┐ рдбреЙрдХрд░ рдЫрд╡рд┐ рдореЗрдВ рдЬреАрдпреВрдЖрдИ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рднреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рдореИрдВ рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╕реЗ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рд░реНрдердХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рднреА рдорд┐рд▓реЗрдЧрд╛ред

  • рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдк рдорд╛рдпрд╛рд╡реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдИ рднреА рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХреНрд╕-рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХреНрд╕-рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рдпрд╛рд╡реА from mayavi import mlab рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдорд╛рдпрд╛рд╡реА рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧреАред

@ max9111 рдореИрдВ рд╢реБрд░реВ рдХрд░рдХреЗ xvfb рдЖрд╡рд░рдг рдХреЛ рдЫреЛрдбрд╝ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм xvfb рдореЗрд░реА рдбреЛрдХрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдкрд░ ENTRYPOINT ["tini", "-g", "--", "xvfb-run"] , рд▓реЗрдХрд┐рди рдореИрдВ рдХреЗрд╡рд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ mlab рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП png рдмреИрдХрдПрдВрдб... рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ vtk рд╕рд╛рде OSMesa vtk рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ...

xvfb-run рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖ рд╕рдХрддрд╛ рд╣реИ:

 xvfb-run python your-py-script.py

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ xvfb рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

scottstanie picture scottstanie  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Kekushke picture Kekushke  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

PennyQ picture PennyQ  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ktavabi picture ktavabi  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

relyativist picture relyativist  ┬╖  16рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ