Mac版Pythonで矢印キーが使えない
概要
Mac版PythonのREPLで矢印キーが使えなくてすごく不便.
ネットで調べるとreadlineと言うライブラリが関係ある事は確定だが、対処方法や状況は人によってまちまちのようだったので、自分の対処方法も一応記事にしておく。
対処方法
ネットでPythonのdmgをダウンロードしてインストール
https://www.python.org/downloads/
これで解決
エラー詳細
import readlineを実行してみたら以下の様なエラーメッセージが出てきた。
>>> import readline
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so, 2): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so
Reason: image not found
>>> import readline
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload/readline.cpython-35m-darwin.so, 2): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload/readline.cpython-35m-darwin.so
Reason: image not found
該当のフォルダの中身
[/usr/local/opt/readline/lib]
% ls
libhistory.7.0.dylib libhistory.dylib@ libreadline.a
libhistory.7.dylib@ libreadline.7.0.dylib libreadline.dylib@
libhistory.a libreadline.7.dylib@
どうやらMacに標準で入っているpython(2.7.11)が読み込むreadlineのバージョンが違ったようだ(readline6系)。
ダウンロードしたPython(2.7.13)ではlibreadline.7.dylibを読みむようで矢印キーとimport readlineを行うことができた。