Hello, I was trying to freeze (actually web/servlet-ize, but that's besides the = point) my Jython application, and failed - I must be doing something = totally wrong. :-(. Here's a short failure scenario: -- module Main.py in root/current package -- # commented -- from amod.A import A from bmod.B import B B().bfunc() -- end Main.py -- -- module A.py in package/directory apkg -- class A: def afunc(self): return "kermits" -- end A.py -- -- module B.py in package/directory bpkg -- from apkg.A import A class B: def bfunc(self): print A().afunc() -- end B.py -- I also have 2 empty __init__.py files (one for apkg, the other for = bpkg). Now, "jython Main.py" works just fine ("kermits" is printed). Here's the output from "jythonc --deep" at compile time: -- start -- E:\projects\jytest\2>jythonc --deep Main.py processing Main processing bpkg.B processing apkg.A processing bpkg.__init__ Required packages: Creating adapters: Creating .java files: B module Main module __init__ module A module Compiling .java to .class... Compiling with args: ['E:\programming\java\jdk1.3\bin\javac.exe', = '-classpa th', '"E:\programming\jython\jython.jar;E:\program = files\borland\Interclie nt\interclient.jar;E:\programming\jython\jython.jar;E:\programming\= java\j 2sdkee1.3\lib\j2ee.jar;E:\programming\java\jakarta-tomcat-3.2.1\jyt= est\WE B-INF\classes;.;.\jpywork;;E:\programming\jython\Tools\jythonc;E:\= project s\jytest\2\.;E:\programming\jython\Lib;e:\programming\Jython\Lib= ;E:\pr ogramming\jython"', '.\jpywork\bpkg\B.java', = '.\jpywork\Main.java', '.\jp ywork\bpkg\__init__.java', '.\jpywork\apkg\A.java'] 0 Note: Some input files use or override a deprecated API. Note: Recompile with -deprecation for details. -- end -- Next, we go to "./jpywork" and do a "java Main" and get: -- start -- Java Traceback: at org.python.core.Py.ImportError(Py.java:180) at org.python.core.imp.load(imp.java:384) at org.python.core.imp.load(imp.java:392) at org.python.core.imp.importName(imp.java:448) at org.python.core.imp.importName(imp.java:528) at org.python.core.ImportFunction.load(__builtin__.java:989) at org.python.core.ImportFunction.__call__(__builtin__.java:982) at org.python.core.PyObject.__call__(PyObject.java:252) at org.python.core.__builtin__.__import__(__builtin__.java:942) at org.python.core.imp.importFromAs(imp.java:586) at bpkg.B$_PyInner.main$3(B.java:54) at bpkg.B$_PyInner.call_function(B.java:36) at org.python.core.PyTableCode.call(PyTableCode.java:198) at org.python.core.PyCode.call(PyCode.java:13) at org.python.core.imp.createFromCode(imp.java:165) at org.python.core.imp.createFromClass(imp.java:186) at org.python.core.imp.loadPrecompiled(imp.java:258) at org.python.core.imp.loadFromPath(imp.java:269) at org.python.core.PyModule.impAttr(PyModule.java:39) at org.python.core.imp.dottedFind(imp.java:428) at org.python.core.imp.importName(imp.java:452) at org.python.core.imp.importName(imp.java:528) at org.python.core.ImportFunction.load(__builtin__.java:989) at org.python.core.ImportFunction.__call__(__builtin__.java:982) at org.python.core.PyObject.__call__(PyObject.java:252) at org.python.core.__builtin__.__import__(__builtin__.java:942) at org.python.core.imp.importFromAs(imp.java:586) at Main$_PyInner.main$1(Main.java:34) at Main$_PyInner.call_function(Main.java:26) at org.python.core.PyTableCode.call(PyTableCode.java:198) at org.python.core.PyCode.call(PyCode.java:13) at org.python.core.imp.createFromCode(imp.java:165) at org.python.core.Py.runMain(Py.java:818) at Main.main(Main.java:49) Traceback (innermost last): File "E:\projects\jytest\2\Main.py", line 0, in main File "E:\projects\jytest\2\bpkg\B.py", line 0, in main ImportError: no module named apkg -- end -- Taking a look at the ./jpywork directory shows that __init__-s (.java, = .class and $_PyInner.class) have only been compiled for bpkg, but not = for apkg. I tried passing it multiple arguments to compile, but it then compiled = it to a different "package level". Now, if we uncomment the first line in Main.py to also "from apkg.A = import A" it works just fine (but importing all modules from the main = application seems an ugly hack). Nevertheless, that still seems to fail "plain" modules that just have "functions" inside, with no classes (will check once again on that). Any comments will be very appreciated. Best regards, Juris. P.S. I'm using Jython 2.1a1 and Sun's JDK 1.3.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4