Опитвам се да задам опциите за печат на numpy, като използвам манипулатор на сигнали в събитието за преоразмеряване на прозореца. Не искате да правите връзка, докато numpy не бъде импортиран, и не искате да импортирате numpy автоматично при стартиране на python. Разбрах, че почти работи с кода по-долу:
# 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)
Работи във vanilla python REPL (тествайте с python -i example.py
и преоразмерете малко терминала). Но не работи в ipython
, когато същият код се добави към моята стартираща ipython конфигурация и не разбирам защо.
Не съм прикован към този конкретен подход (само това съм опитвал досега), така че ще формулирам въпроса по-общо:
Как numpy може правилно да запълни автоматично ширината на терминала в ipython?
Можете да използвате print(np.arange(200))
, например, за да проверите поведението на numpy при обвиване на ред.