From: Balaji S. <bal...@gm...> - 2007-09-18 23:37:31
|
Thanks a lot Jeff. That worked.!! Balaji On 9/18/07, Jeff Emanuel <jem...@fr...> wrote: > > import org.python.core.imp; > import org.python.core.PyModule; > > Balaji Srinivasan wrote: > > Thanks Jeff. But what is imp? > > I tried interp.addModule and that doesnt compile.Thanks > > Balaji > > > > On 9/18/07, Jeff Emanuel <jem...@fr...> wrote: > >> Add this after creating your interpreter: > >> > >> PyModule mod = imp.addModule("__main__"); > >> interp.setLocals(mod.__dict__); > >> > >> > >> Balaji Srinivasan wrote: > >>> Hi EveryoneI found a difference between the way jython works when it > is > >>> called from the command line and when it is called from a java > program. > >> Ive > >>> tried my best to explain it and get a workaround but all attempts have > >>> failed. I will appreciate any help. > >>> > >>> > >>> What I want to do is given a script string I want to find all the > >> functions > >>> defined in the script. > >>> Lets say the script fragment is as follows: > >>> def foobar(): > >>> print("foobar") > >>> > >>> > >>> If I try this via the jython program, I get the following: > >>> > >>> > >>> bash$ jython > >>> Jython 2.2 on java1.5.0_11 > >>> Type "copyright", "credits" or "license" for more information. > >>>>>> def foobar(): > >>> ... print("foobar") > >>> ... > >>>>>> this_module = __import__(__name__) > >>> *>>> print __name__* > >>> *__main__* > >>>>>> for e in dir(): > >>> ... if (callable(getattr(this_module, e))): > >>> ... print(e + " is callable") > >>> ... > >>> *foobar is callable* > >>> > >>> > >>> Notice that the __name__ shows up as __main__ and that foobar shows up > >> as > >>> callable. So far so good. > >>> > >>> > >>> Now if I try to do the same thing via java: > >>> > >>> > >>> bash$ java Test2 > >>> Traceback (innermost last): > >>> File "<string>", line 4, in ? > >>> *ImportError: no module named main* > >>> *Name was main* > >>> * > >>> * > >>> Now why is the __name__ set to main? I even tried hardcoding the > >> __import__ > >>> to call __import__('__main__'). It couldnt find that module either. > >>> Any ideas on how I can get this to work? Any help would be greatly > >>> appreciated. > >>> > >>> > >>> Here is the java code: > >>> import org.python.util.PythonInterpreter ; > >>> import org.python.core.*; > >>> > >>> > >>> public class Test2 { > >>> > >>> > >>> public static void main(String[] args) throws Exception { > >>> PythonInterpreter interp = new PythonInterpreter(); > >>> interp.setErr(System.err); > >>> interp.setOut(System.out); > >>> String s = "def foobar():\n" + > >>> " print(\"foobar\")\n" + > >>> "name=__name__\n" + > >>> "this_module = __import__(__name__)\n" + > >>> "for e in dir():\n" + > >>> " if (callable(getattr(this_module, > >> e))):\n" + > >>> " print(e + \" is callable\")\n"; > >>> > >>> > >>> try { > >>> interp.exec(s); > >>> } catch (PyException e) { > >>> e.printStackTrace (); > >>> } > >>> System.out.println("Name was " + interp.get("name")); > >>> } > >>> } > >>> > >>> > >>> Thanks a lot in advance and apologies if I missed an FAQ that covers > >> this. I > >>> did try to do my research before posting this. > >>> Thanks > >>> Balaji > >>> > >>> > >>> > >>> ------------------------------------------------------------ > ------------ > >>> > >>> ------------------------------------------------------------ > >> ------------- > >>> This SF.net email is sponsored by: Microsoft > >>> Defy all challenges. Microsoft(R) Visual Studio 2005. > >>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > >>> > >>> > >>> ------------------------------------------------------------ > ------------ > >>> > >>> _______________________________________________ > >>> Jython-users mailing list > >>> Jyt...@li... > >>> https://lists.sourceforge.net/lists/listinfo/jython-users > > > > > > ------------------------------------------------------------------------ > > > > ------------------------------------------------------------ > ------------- > > > This SF.net email is sponsored by: Microsoft > > Defy all challenges. Microsoft(R) Visual Studio 2005. > > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > Jython-users mailing list > > Jyt...@li... > > https://lists.sourceforge.net/lists/listinfo/jython-users > |