Python インタープリターのターミナル幅をリセットするにはどうすればよいですか?

Python インタープリターのターミナル幅をリセットするにはどうすればよいですか?

新しい 14.04 LTS gnome-terminal で Python を起動すると、文字幅は 80 文字になります。

$ python
>>> import os
>>> os.popen('stty size', 'r').read()
'24 80\n'

gnome-terminal のサイズを変更すると、新しいサイズが報告されます。

>>> os.popen('stty size', 'r').read()
'23 170\n'

ただし、入力 Python プロンプトではサイズ変更が認識されず、長い行を入力すると行の先頭が上書きされ始めます。

nm> 1234567890qwertyuiopåasdfghjklæøzxcvbnm1234567890qwertyuiopåasdfghjklæøzxcvb

ここで「nm」はラップされます。

gnome-terminal のメニューからリセットしても効果がありません。ウィンドウのサイズが変更されたことを Python インタープリターに通知する方法はありますか?

答え1

これは、readline バージョン 6.3 がリリースされてから発生した Python のバグです。Ubuntu 14.04 には libreadline6 バージョン 6.3-4ubuntu2 が含まれているため、14.04 以降のすべての Ubuntu リリースが影響を受けます。

このバグはPythonで修正されましたが、修正はまだ公式リリースには含まれていません。アップストリームのバグレポートを参照してください。ここ

この記事の執筆時点での最新リリースは 2.7.11 と 3.5.1 なので、次のリリース 2.7.12、3.5.2、3.6.0 では修正されるはずです。

関連情報