window resizeイベントでシグナルハンドラを使用してnumpyの印刷オプションを設定しようとしています。 numpyがインポートされるまで接続したくないので、pythonの起動時にnumpyを自動的にインポートしたくありません。それは、バニラのpython REPL(python -i example.py
と端末を少しサイズを変更してテスト)で動作しますシグナルハンドラは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)
:私はそれを次のコードではほとんど加工持っています。しかし、同じコードが私の起動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