zshのpythonで矢印キー、履歴、タブ補完を有効にしたくなった
環境
Ubuntu 16.04 Server
Python3.5.1
目次
readline、問題発生
まずはreadlineをぶちこむ。 pythonは入っている前提で話を進める。
$ pip install readline $ python Python 3.5.1 (default, Mar 24 2016, 21:52:39) [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.29)] on darwin Type "help", "copyright", "credits" or "license" for more information. Traceback (most recent call last): File "/Users/hoge/.pythonrc.py", line 4, in <module> import readline ImportError: dlopen(/Users/hoge/.pyenv/versions/3.5.1/lib/python3.5/lib-dynload/readline.cpython-35m-darwin.so, 2): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib Referenced from: /Users/hoge/.pyenv/versions/3.5.1/lib/python3.5/lib-dynload/readline.cpython-35m-darwin.so Reason: image not found
readlineのインポートができない問題が発生した。 これは、次のページを参考にして、リンク貼り直して解決する。
結論から言うと、/usr/local/opt/readline/lib/libreadline.6.dylib がないのがまずい。なので、libreadline.dylibリンクを貼り直せばよい。
$ sudo ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
続、問題対応
そのあとは、次のリンクを参考にpythonの初期設定ファイルを作る。
back iとかも使えるようになった。
$ vi ~/.pythonrc.py # -*- encoding: utf-8 -*-# Python startup fileimport readline import rlcompleter import atexit import os # tab complete readline.parse_and_bind('tab: complete') # history file histfile = os.path.join(os.environ['HOME'], '.pythonhistory') try: readline.read_history_file(histfile) except IOError: pass atexit.register(readline.write_history_file, histfile) del os, histfile, readline, rlcompleter, atexit
動作確認
インタラクティブシェルを立ち上げて、矢印キーが有効であることを確認する。
$ python