【发布时间】:2017-05-13 03:26:42
【问题描述】:
我正在尝试在窗口调整大小事件上使用信号处理程序设置 numpy 打印选项。不想在导入 numpy 之前建立连接,也不想在 python 启动时自动导入 numpy。我几乎可以使用下面的代码:
# 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 的换行行为。
【问题讨论】:
-
This ipython issue 似乎相关。
-
您的代码在 IPython 4.2.0 中适用于我,适用于 Python 3.5.1,但不适用于 IPython 5.1.0 和 Python 3.5.2。
标签: python numpy ipython window-resize