Наткнулся на этот вопрос, когда сам искал ответ. Наличие inspect.currentframe
привязано к sys._getframe
:
def currentframe():
"""Return the frame of the caller or None if this is not possible."""
return sys._getframe(1) if hasattr(sys, "_getframe") else None
Таким образом, ограничение распространяется на все другие функции, также использующие sys._getframe
. Для inspect
это только inspect.stack
.
Напротив, inspect.trace
использует sys.exc_info
. Это является неотъемлемой частью схем обработки исключений и всегда должно быть доступно. Все другие связанные функции, например getframeinfo
, уже полагайтесь на то, что есть рамка. Их применимость зависит от того, хотите ли вы проверить исключение или вызвать обратный вызов.
Обратите внимание, что мой локальный jython по умолчанию поддерживает sys._getframe
. ipy работает, если работает с -X:Frames
.