[kepler-dev] PythonScript actor
Christopher Brooks
cxh at eecs.berkeley.edu
Wed Mar 12 13:45:07 PDT 2008
Hi Dan,
There are some examples in $PTII/ptolemy/actor/lib/python/test/auto
Other than that, I don't know of anything.
It could easily be that we have to set the python.home property.
This would make Jython less useful because it would make deployment
difficult because deployment would require installing the Jython
directory. The proper solution for the the Jython developers is
to ship one jar file that contains the files in the python.home
directory. The other problem with Jython is that the jar cache
wants to write on the disk.
I can look at modifying $PTII/bin/vergil so that it includes
the python.home hack. Or, perhaps the Jython actors should
be smart enough to set this themselves by looking for the jython.jar
file in the classpath?
BTW - the PythonScript actor can change, I don't think there is
much use of it, so evolving it to something more useful seems
appropriate.
_Christopher
--------
Hi Christopher,
I have been playing with the PythonScript actor in Kepler/PTII (as
part of an effort to learn Python/Jython). I am familiar with the
examples in $PTII/ptolemy/actors/lib/python/ and the Python actors works
fine with those examples in Kepler and PTII. Are there any more examples
of Python scripts in PTII?
One reason I ask is that I was trying to get the script below to
work in Kepler and PTII and I run into several errors, athough it works
OK when executed directly with the jython command line interpreter. (The
problem is with importing the os module and in finding the file named on
the the input port)
import os
from ptolemy.data import IntToken
class Main :
"Number of lines"
def fire(self) :
if not self.input.hasToken(0) :
return
t = self.input.get(0)
fs = t.toString()
# Note the fs includes quotes at both ends that must be removed !
print fs[1:len(fs)-1]
file = open(fs[1:len(fs)-1],'r')
lines = file.readlines();
cnt = len(lines)
cwd = os.getcwd()
st = IntToken(cnt)
self.output.broadcast(st)
Now, I CAN get the above script to work OK when I add the following to
the Kepler java startup command
-Dpython.home=/Users/higgins/jython2.2.1
i.e. when I create a new property 'python.home = <path to my jython home
directory>
I guess I am just questioning the setup for the PythonScript actor in
Kepler and PTII. Setting python.home does seem to work OK when one has a
jython installation but I haven't figured out how to set up jython
within Kepler for more complicated scripts. In any case, it looks like
just adding jython.jar to the classpath is not sufficient for some scripts.
Dan Higgins
--------
More information about the Kepler-dev
mailing list