Can't you just use the pvpython or pvbatch if you need to run on the
command line?  I'm not sure what could be your problem other than if you
are using a different python to what paraview is compiled against.

Regards,
Paul


On 6 March 2014 19:46, Simon Couture <[email protected]> wrote:

> Thank you for your help Paul. I think I narrowed down my problem. Your
> example
> (and also my own) indeed work when executed from the paraview GUI's python
> shell. However, when I try to run your example from an external python
> shell
> (outside the paraview GUI), this is what I get:
>
> In [5]: from paraview.simple import *
> paraview version 3.98.1
>
> In [6]: paraview
> Out[6]: <module 'paraview' from
> '/raid/usr/local/lib/paraview-3.98/site-packages/paraview/__init__.py'>
>
> In [7]: Sphere1 = Sphere( guiName="Sphere1" )
>
> In [8]: ProgrammableFilter1 = ProgrammableFilter(
> guiName="ProgrammableFilter1",
> RequestUpdateExtentScript='', RequestInformationScript='', Script="input =
> self.GetInput()\noutput =
> self.GetOutput()\noutput.ShallowCopy(input)\n\nnp =
> output.GetNumberOfPoints()\n\narray =
>
> vtk.vtkFloatArray()\narray.SetName('newArray')\narray.SetNumberOfTuples(np)\nfor
> i in range(np):\n    array.SetValue(i,
> i)\n\noutput.GetPointData().AddArray(array)\n", PythonPath='' )
>
> In [9]: UpdatePipeline()
> Traceback (most recent call last):
>   File "<string>", line 1, in <module>
> ImportError: No module named paraview
>
> In [10]: paraview
> Out[10]: <module 'paraview' from
> '/raid/usr/local/lib/paraview-3.98/site-packages/paraview/__init__.py'>
>
> In [11]: ProgrammableFilter1.PointData.GetNumberOfArrays()
> Out[11]: 0
>
> I make sure that my python path contains all the directories that are
> present in
> the paraview GUI's python shell session. Indeed I can type 'import
> paraview' or
> 'import paraview.simple' (as above) with no problem, but somehow I get this
> weird ImportError when updating the pipeline with the programmable filter.
> Any
> ideas on how to get to the bottom of this? This is on Linux CentOS and
> using
> either python 2.6 or 2.7 yields this error.
>
> Simon
>
>
> Quoting Paul Edwards <[email protected]>:
>
> > Are you sure you are updating?  This works for me in pvpython:
> >
> > >>> from paraview.simple import *
> > paraview version 4.1.0-243-gd6a42b6
> > >>> Sphere1 = Sphere( guiName="Sphere1" )
> > >>>
> > >>> ProgrammableFilter1 = ProgrammableFilter(
> > guiName="ProgrammableFilter1", RequestUpdateExtentScript='',
> > RequestInformationScript='', Script="input = self.GetInput()\noutput =
> > self.GetOutput()\noutput.ShallowCopy(input)\n\nnp =
> > output.GetNumberOfPoints()\n\narray =
> >
>
> vtk.vtkFloatArray()\narray.SetName('newArray')\narray.SetNumberOfTuples(np)\nfor
> > i in range(np):\n    array.SetValue(i,
> > i)\n\noutput.GetPointData().AddArray(array)\n", PythonPath='' )
> > >>> UpdatePipeline()
> > >>> ProgrammableFilter1.PointData.GetNumberOfArrays()
> > 2
> >
> > Regards,
> > Paul
> >
> >
> >
> > On 6 March 2014 01:31, Simon Couture <[email protected]> wrote:
> >
> > > Hi everyone,
> > >
> > > I am trying to use paraview from an external python program where I
> import
> > > paraview.simple and mostly use python code generated by Paraview's
> trace
> > > tool
> > > to accomplish what I want. In general it works well, but in one
> instance I
> > > need
> > > to generate a new data array from my source/reader, and as far as I
> know,
> > > the
> > > programmable filter is the only way to do this (the actual PointData
> > > arrays of
> > > the sources are not directly visible/editable through the python
> shell).
> > > Now
> > > when I try to execute the python code that I get from trace to insert a
> > > programmable filter with a given script, the PointData array that the
> > > programmable filter's script is supposed to create is not created (and
> it
> > > does
> > > work when I create the programmable filter using the Paraview GUI).
> > >
> > > To be more clear, here is the python code that I run (cutting out
> camera
> > > and
> > > rendering commands):
> > >
> > > mysource = AVSUCDReader( FileNames=['/home/myfile.inp'] )
> > >
> > > mysource.PointArrayStatus = []
> > > mysource.CellArrayStatus = []
> > >
> > > RenderView1 = GetRenderView()
> > > DataRepresentation3 = Show()
> > > ProgrammableFilter1 = ProgrammableFilter()
> > > DataRepresentation4 = Show()
> > > ProgrammableFilter1.RequestUpdateExtentScript = ''
> > > ProgrammableFilter1.PythonPath = ''
> > > ProgrammableFilter1.RequestInformationScript = ''
> > > ProgrammableFilter1.Script = "pdi = self.GetInput()\nnbpoints =
> > > pdi.GetNumberOfPoints()\ninput_pointdata =
> > > pdi.GetPointData().GetArray('data')
> > > [... the rest of my script here]"
> > >
> > > After running this in either the paraview python shell or from an
> external
> > > python program, if I do for instance:
> > >
> > > ProgrammableFilter1.PointData.GetNumberOfArrays()
> > >
> > > I get 0 meaning that no PointData array was created, whereas if the
> same
> > > programmable filter is created in the paraview GUI, I would get 1.
> Please
> > > note
> > > that I am not using the Copy Arrays option of the programmable filter.
> > >
> > > Has anyone successfully used the programmable filter from a python
> script?
> > >
> > > _______________________________________________
> > > Powered by www.kitware.com
> > >
> > > Visit other Kitware open-source projects at
> > > http://www.kitware.com/opensource/opensource.html
> > >
> > > Please keep messages on-topic and check the ParaView Wiki at:
> > > http://paraview.org/Wiki/ParaView
> > >
> > > Follow this link to subscribe/unsubscribe:
> > > http://www.paraview.org/mailman/listinfo/paraview
> > >
> >
>
>
>
>
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to