Изменить I python sys.displayhook - PullRequest
0 голосов
/ 29 апреля 2020

Я написал расширение для стандартной оболочки 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 тоже?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...