从 Python IDLE 控制 Paraview GUI
Controlling Paraview GUI from Python IDLE
我正在尝试使用 IDLE 以交互方式控制 Paraview。这将涉及从 IDLE 发送命令并查看 Paraview 中发生的更改。我宁愿不使用 in-Paraview python shell.
至此,我已经成功从IDLE导入Paraview模块(simple,servermanager等)。但是,发送的命令不会反映在 Paraview 中。例如:
>>> from paraview.simple import *
>>> cone = Cone()
>>> Show()
>>> Render()
确实创建了一个圆锥体。然而,锥体输出到一个新的、独立的 OpenGL window,而不是 Paraview GUI。
是否可以使用IDLE交互控制Paraview?如果是这样如何做到这一点?谢谢
您需要在 multiclient/server 模式下 运行 副视图。
在终端 运行 pvserver.
./bin/pvserver --multi-clients
在另一个终端中,运行查看并连接到您的服务器
./bin/paraview
File->Connect
AddServer -> Choose a name -> Configure -> Save
Connect
在第三个终端,运行 pvpython(或者你自己配置的python)
./bin/pvpython
>> from paraview.simple import *
>> Connect("localhost")
>> Cone()
>> Show()
我针对我的系统 python 构建了 paraview,这样我就可以使用 ipython
和其他软件包。我只需要将 PYTHONPATH
设置为指向 paraview python 站点包,并将 LD_LIBRARY_PATH
设置为指向 paraview lib 目录。
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]: <paraview.servermanager.Cone at 0x7f30716cde10>
In [4]: Show()
Out[4]: <paraview.servermanager.GeometryRepresentation at 0x7f307167b210>
In [5]: GetSources()
Out[5]: {('Cone1', '8803'): <paraview.servermanager.Cone at 0x7f30716cde10>}
In [6]: GetActiveSource()
Out[6]: <paraview.servermanager.Cone at 0x7f30716cde10>
Screen shot of the rendered cone from the ipython paraview client
我的 paraview 版本是在 Ubuntu 18.04 上从 master 构建的。
我遇到的唯一问题是 python 站点-packages/paraview/modules
目录中缺少 __init__.py
文件。
In [1]: from paraview.simple import *
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-cc11d49fb28b> in <module>()
----> 1 from paraview.simple import *
/home/dustin/repos/paraview_builds/master/install/lib/python2.7/site-packages/paraview/simple.py in <module>()
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 <module>()
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
我通过在 paraview/modules
目录中创建一个 __init__.py
文件来解决这个问题:
touch /path/to/paraview/install/lib/python2.7/site-packages/paraview/modules/__init__.py
我正在尝试使用 IDLE 以交互方式控制 Paraview。这将涉及从 IDLE 发送命令并查看 Paraview 中发生的更改。我宁愿不使用 in-Paraview python shell.
至此,我已经成功从IDLE导入Paraview模块(simple,servermanager等)。但是,发送的命令不会反映在 Paraview 中。例如:
>>> from paraview.simple import *
>>> cone = Cone()
>>> Show()
>>> Render()
确实创建了一个圆锥体。然而,锥体输出到一个新的、独立的 OpenGL window,而不是 Paraview GUI。
是否可以使用IDLE交互控制Paraview?如果是这样如何做到这一点?谢谢
您需要在 multiclient/server 模式下 运行 副视图。 在终端 运行 pvserver.
./bin/pvserver --multi-clients
在另一个终端中,运行查看并连接到您的服务器
./bin/paraview
File->Connect
AddServer -> Choose a name -> Configure -> Save
Connect
在第三个终端,运行 pvpython(或者你自己配置的python)
./bin/pvpython
>> from paraview.simple import *
>> Connect("localhost")
>> Cone()
>> Show()
我针对我的系统 python 构建了 paraview,这样我就可以使用 ipython
和其他软件包。我只需要将 PYTHONPATH
设置为指向 paraview python 站点包,并将 LD_LIBRARY_PATH
设置为指向 paraview lib 目录。
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]: <paraview.servermanager.Cone at 0x7f30716cde10>
In [4]: Show()
Out[4]: <paraview.servermanager.GeometryRepresentation at 0x7f307167b210>
In [5]: GetSources()
Out[5]: {('Cone1', '8803'): <paraview.servermanager.Cone at 0x7f30716cde10>}
In [6]: GetActiveSource()
Out[6]: <paraview.servermanager.Cone at 0x7f30716cde10>
Screen shot of the rendered cone from the ipython paraview client
我的 paraview 版本是在 Ubuntu 18.04 上从 master 构建的。
我遇到的唯一问题是 python 站点-packages/paraview/modules
目录中缺少 __init__.py
文件。
In [1]: from paraview.simple import *
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-cc11d49fb28b> in <module>()
----> 1 from paraview.simple import *
/home/dustin/repos/paraview_builds/master/install/lib/python2.7/site-packages/paraview/simple.py in <module>()
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 <module>()
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
我通过在 paraview/modules
目录中创建一个 __init__.py
文件来解决这个问题:
touch /path/to/paraview/install/lib/python2.7/site-packages/paraview/modules/__init__.py