Я написал расширение для стандартной оболочки Python, которое поможет вам просматривать и управлять своей историей. Это в основном curses-программа, которая вызывается путем ввода hh
после импорта hh
из пакета. Это его __init__.py
:
import curses
import sys
from pyhstr.application import main
hh = object()
original = sys.displayhook
def spam(arg):
if arg == hh:
curses.wrapper(main)
else:
original(arg)
sys.displayhook = spam
Итак, однажды в оболочке, когда вы наберете from pyhstr import hh
и наберете hh
, появится окно подсказки, и все работает нормально. Однако, когда я пытался сделать эту работу для I Python, я заметил, что displayhook не изменяется:
alex@smartalex-bed:~/.repos/codelib/python/pyhstr$ ipython3
Python 3.6.9 (default, Apr 18 2020, 01:56:04)
Type "copyright", "credits" or "license" for more information.
IPython 5.5.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: from pyhstr import hh
In [2]: hh
Out[2]: <object at 0x7f4d7dd668c0>
In [4]: import sys
In [5]: sys.displayhook
Out[5]: <IPython.terminal.prompts.RichPromptDisplayHook at 0x7f4d7e67a080>
Почему не меняется displayhook и как я могу изменить его так приложение работает на I Python тоже?