Controlando Paraview GUI desde Python IDLE

Estoy tratando de controlar Paraview interactivamente utilizando IDLE. Esto implicaría enviar comandos desde IDLE y ver los cambios que se producen en Paraview. Preferiría no usar el shell de Python en Paraview.

Hasta ahora, he logrado importar los módulos Paraview (simple, servermanager … etc) desde IDLE. Sin embargo, los comandos enviados no se reflejan en Paraview. Por ejemplo:

>>> from paraview.simple import * >>> cone = Cone() >>> Show() >>> Render() 

de hecho crea un cono. Sin embargo, el cono se envía a una nueva ventana OpenGL independiente, y no a la GUI de Paraview.

¿Es posible controlar Paraview interactivamente usando IDLE? Si es así, ¿cómo lograr esto? Gracias

Debe ejecutar paraview en modo multicliente / servidor. En una terminal ejecuta pvserver.

 ./bin/pvserver --multi-clients 

En otra terminal, ejecute paraview y conéctese a su servidor.

 ./bin/paraview File->Connect AddServer -> Choose a name -> Configure -> Save Connect 

En un tercer terminal, ejecute pvpython (o su propio python configurado)

 ./bin/pvpython >> from paraview.simple import * >> Connect("localhost") >> Cone() >> Show() 

Construí paraview contra mi sistema python para poder usar ipython y otros paquetes. Solo tuve que configurar PYTHONPATH para que apunte a los paquetes de sitio de python paraview y LD_LIBRARY_PATH para que apunte al directorio lib de paraview.

 export PYTHONPATH=/path/to/paraview/install/lib/python2.7/site-packages export LD_LIBRARY_PATH=/path/to/paraview/install/lib 
 $ ipython Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) Type "copyright", "credits" or "license" for more information. IPython 5.5.0 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: from paraview.simple import * In [2]: Connect("localhost") Out[2]: Connection (cs://localhost:11111) [2] In [3]: Cone() Out[3]:  In [4]: Show() Out[4]:  In [5]: GetSources() Out[5]: {('Cone1', '8803'): } In [6]: GetActiveSource() Out[6]:  

Captura de pantalla del cono renderizado desde el cliente de ipython paraview

Mi versión paraview fue construida desde master en Ubuntu 18.04.

El único problema que tuve fue que faltaba un archivo __init__.py en el directorio python site- packages/paraview/modules .

 In [1]: from paraview.simple import * --------------------------------------------------------------------------- ImportError Traceback (most recent call last)  in () ----> 1 from paraview.simple import * /home/dustin/repos/paraview_builds/master/install/lib/python2.7/site-packages/paraview/simple.py in () 39 40 import paraview ---> 41 from paraview import servermanager 42 import paraview._backwardscompatibilityhelper 43 /home/dustin/repos/paraview_builds/master/install/lib/python2.7/site-packages/paraview/servermanager.py in () 54 from paraview import _backwardscompatibilityhelper as _bc 55 ---> 56 from paraview.modules.vtkPVServerImplementationCore import * 57 from paraview.modules.vtkPVClientServerCoreCore import * 58 from paraview.modules.vtkPVServerManagerCore import * ImportError: No module named modules.vtkPVServerImplementationCore 

__init__.py esto simplemente creando un archivo __init__.py en el directorio paraview/modules :

 touch /path/to/paraview/install/lib/python2.7/site-packages/paraview/modules/__init__.py