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\\jytest\\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).
 
 
Any comments will be very appreciated.
 
 
Best regards,
Juris.