2009-07-10 10 views
2

Ich verwende eine in Jython entwickelte Anwendung. Wenn ich versuche, inspect.py zu verwenden, wird eine Fehlermeldung angezeigt.Probleme mit inspect.py bei Verwendung in Jython

Mein Code geht so

import inspect,os,sys,pprint,imp 
def handle_stackframe_without_leak(getframe): 
    frame = inspect.currentframe() 
    try: 
     function = inspect.getframeinfo(getframe) 
     print inspect.getargvalues(getframe) 
    finally: 
     del frame 
# 
def raja(a): 
    handle_stackframe_without_leak(inspect.currentframe()) 
    print a 
# 
def callraja(): 
    handle_stackframe_without_leak(inspect.currentframe()) 
    raja("[email protected]") 
# 
callraja() 
raja("[email protected]") 
# 

Wenn ich diese mit python.exe laufen, gibt es keine Probleme gibt. Allerdings mit dieser in der App werfen die folgenden Fehler

File "C:\Program Files\jython221ondiffjava\Lib\inspect.py", line 722, in getframeinfo 
File "C:\Program Files\jython221ondiffjava\Lib\inspect.py", line 413, in findsource 
File "C:\Program Files\jython221ondiffjava\Lib\sre.py", line 179, in compile 
File "C:\Program Files\jython221ondiffjava\Lib\sre.py", line 227, in _compile 
File "C:\Program Files\jython221ondiffjava\Lib\sre_compile.py", line 437, in compile 
File "C:\Program Files\jython221ondiffjava\Lib\sre_compile.py", line 421, in _code 
File "C:\Program Files\jython221ondiffjava\Lib\sre_compile.py", line 143, in _compile 
ValueError: ('unsupported operand type', 'branch') 

    at org.python.core.Py.makeException(Unknown Source) 
    at sre_compile$py._compile$1(C:\Program Files\jython221ondiffjava\Lib\sre_compile.py:143) 
    at sre_compile$py.call_function(C:\Program Files\jython221ondiffjava\Lib\sre_compile.py) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyFunction.__call__(Unknown Source) 
    at sre_compile$py._code$11(C:\Program Files\jython221ondiffjava\Lib\sre_compile.py:421) 
    at sre_compile$py.call_function(C:\Program Files\jython221ondiffjava\Lib\sre_compile.py) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyFunction.__call__(Unknown Source) 
    at sre_compile$py.compile$12(C:\Program Files\jython221ondiffjava\Lib\sre_compile.py:437) 
    at sre_compile$py.call_function(C:\Program Files\jython221ondiffjava\Lib\sre_compile.py) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyFunction.__call__(Unknown Source) 
    at org.python.core.PyObject.invoke(Unknown Source) 
    at sre$py._compile$13(C:\Program Files\jython221ondiffjava\Lib\sre.py:227) 
    at sre$py.call_function(C:\Program Files\jython221ondiffjava\Lib\sre.py) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyFunction.__call__(Unknown Source) 
    at sre$py.compile$8(C:\Program Files\jython221ondiffjava\Lib\sre.py:179) 
    at sre$py.call_function(C:\Program Files\jython221ondiffjava\Lib\sre.py) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyFunction.__call__(Unknown Source) 
    at org.python.core.PyObject.invoke(Unknown Source) 
    at inspect$py.findsource$24(C:\Program Files\jython221ondiffjava\Lib\inspect.py:413) 
    at inspect$py.call_function(C:\Program Files\jython221ondiffjava\Lib\inspect.py) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyFunction.__call__(Unknown Source) 
    at inspect$py.getframeinfo$54(C:\Program Files\jython221ondiffjava\Lib\inspect.py:722) 
    at inspect$py.call_function(C:\Program Files\jython221ondiffjava\Lib\inspect.py) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyFunction.__call__(Unknown Source) 
    at org.python.core.PyObject.invoke(Unknown Source) 
    at custom$py.handle_stackframe_without_leak$4(C:\Program Files\<my app>\jars\custom.py:29) 
    at custom$py.call_function(C:\Program Files\<my app>\.\jars\custom.py) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyFunction.__call__(Unknown Source) 
    at definitions$py.gotonotificationprofile$122(C:\Program Files\<my app>\.\jars\definitions.py:1738) 
    at definitions$py.call_function(C:\Program Files\<my app>\.\jars\definitions.py) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyFunction.__call__(Unknown Source) 
    at notificationcases$py.A003$2(C:\Program Files\<my app>\.\jars\notificationcases.py:143) 
    at notificationcases$py.call_function(C:\Program Files\<my app>\.\jars\notificationcases.py) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyFunction.__call__(Unknown Source) 
    at org.python.pycode._pyx171.f$0(003:8) 
    at org.python.pycode._pyx171.call_function(003) 
    at org.python.core.PyTableCode.call(Unknown Source) 
    at org.python.core.PyCode.call(Unknown Source) 
    at org.python.core.Py.runCode(Unknown Source) 
    at org.python.util.PythonInterpreter.execfile(Unknown Source) 

Jede Hilfe wird geschätzt.

Dank Rajasankar

Antwort

0

Dies könnte http://grinder.sourceforge.net/faq.html#re-problems helfen.

Für eine schnelle Überprüfung, versuchen import re in findsource Methode (C: \ Programme \ jython221ondiffjava \ Lib \ inspect.py) Zugabe


def findsource(object): 
    """Return the entire source file and starting line number for an object. 
    (...snip...)""" 
    import re 
    file = getsourcefile(object) or getfile(object) 

etwas obwohl kann nicht versprechen, ...

1

Haben Sie versucht, Ihr Programm auf der Kommandozeile mit Jython (also außerhalb der App) zu laufen? Wenn ich Ihr Programm mit Jython 2.2.1 oder Jython 2.5.0 ausführe, erhalte ich identische Ausgabe wie von Python.

+0

Ich habe mit Python versucht. Ich werde es versuchen. – Rajasankar

+0

Ausarbeiten Seite die App funktioniert. Ich kann nicht mit dem Re-Modul innerhalb der App arbeiten. Wird die Versionen überprüfen. – Rajasankar

Verwandte Themen