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