Я пытаюсь установить параметры печати numpy с помощью обработчика сигнала в событии изменения размера окна. Не хотите подключаться, пока не будет импортирован numpy, и не хотите автоматически импортировать numpy при запуске python. У меня это почти работает на коде ниже:Обработчик сигналов работает в python, но не в ipython
# example.py
import wrapt
@wrapt.when_imported('numpy')
def post_import_hook(numpy):
import signal
try:
from shutil import get_terminal_size
except ImportError:
# Python 2
from shutil_backports import get_terminal_size
def resize_handler(signum=signal.SIGWINCH, frame=None):
w, h = get_terminal_size()
numpy.set_printoptions(linewidth=w)
print('handled window resize {}'.format(w))
resize_handler()
signal.signal(signal.SIGWINCH, resize_handler)
Он работает в ванильном питона РЕПЛ (тест с python -i example.py
и размером терминала немного). Но он не работает в ipython
, когда тот же код добавляется в мою конфигурацию ipython для запуска, и я не понимаю, почему.
Я не фиксирован на данном подходе (это только то, что я пытался до сих пор), поэтому я фраза вопрос в более общем плане:
Как правильно заполнить Numpy ширине терминала автоматически в ipython?
Например, вы можете использовать print(np.arange(200))
, чтобы проверить поведение обертки строки numpy.
[Эта проблема с ipython] (https://github.com/ipython/ipython/issues/8469) представляется актуальной. –
Ваш код работает для меня в IPython 4.2.0, с Python 3.5.1, но не с IPython 5.1.0 и Python 3.5.2. – Kundor