Skip to main content
 首页 » 编程设计

python之在 Jython 中使用时 inspect.py 的问题

2025年05月04日12freeliver54

我正在使用用 Jython 开发的应用程序。当我尝试在其中使用 inspect.py 时,它显示错误消息。

我的代码是这样的

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("raja@ad.com") 
# 
callraja() 
raja("raja@ad.com") 
# 

当我使用 python.exe 运行它时,没有任何问题。但是,在应用程序中使用它会引发以下错误

 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) 

任何帮助将不胜感激。

谢谢 拉贾桑卡尔

请您参考如下方法:

您是否尝试过使用 Jython 在命令行上运行您的程序(在应用程序之外)?当我使用 Jython 2.2.1 或 Jython 2.5.0 运行您的程序时,我得到与 Python 相同的输出。