amazon linuxでpythonの対話モードを使っていると、上キーで履歴を入力することができなかった。その解決策メモ。
結論から言うと、readlineを入れてpythonを再コンパイルすれば解決する。
readlineを入れてpythonを再コンパイルする
readline(正確にはreadline-devel)をyumでインストールして、pythonを再コンパイルすれば解決する。
# readlineのインストール sudo yum install -y readline-devel # pythonのコンパイルとインストール cd wget http://python.org/ftp/python/2.7/Python-2.7.tgz tar xfz Python-2.7.tgz cd Python-2.7 ./configure --prefix=/opt/python2.7 --with-threads --enable-shared make sudo make install # ~/.bashrcに追記 alias python='/opt/python2.7/bin/python' alias python2.7='/opt/python2.7/bin/python' PATH=$PATH:/opt/python2.7/bin source ~/.bashrc # pythonのバージョン番号が表示されればインストール完了 python2.7 --version
システムのpythonのバージョンを変えるとyumとかが正しく動かなくなったりするので、別の場所にインストールしています。
一般ユーザーのpython実行時にはpython2.7、rootユーザーのpython実行時にはデフォルトのpython、が実行されるようになっています。
pythonの実行時にライブラリ(おそらく*.soファイル)が足りないよエラーがでるようになった場合は、下記のコマンドを実行してください。
# /etc/ld.so.conf.d/opt-python2.7.confに追記 /opt/python2.7/lib sudo ldconfig
以上の手順で、pythonの対話モード時に上キーで履歴を入力できるようになっているはずです。
参考リンク
stackoverflowの解説記事。readline-develがないんじゃないの?ってズバリ指摘されています。
Python shell: Arrow keys do not work on remote machine
「カーソルキーで入力されるのは ^[[A という文字列です。入力の早さから、人間が入力したのかどうかを判定し、人間っぽい場合は矢印キーとして動作します」という記述があった。へー。