Help us understand the problem. What is going on with this article?

osx の pyenv な python で矢印キーが使えない問題の暫定対応

More than 3 years have passed since last update.

TL;DR

python が libreadline.6.dylib を読もうとするので、互換用のシンボリックリンクに別名で貼っちゃう。

cd $(brew --prefix readline)/lib
ln -s libreadline.dylib libreadline.6.dylib

環境

  • OSX Terminal.app (ターミナル.app)
  • Xcode 8.0
  • Homebrew
    • pyenv 1.0.2
    • zsh 5.2

事象と経緯

brew で入れた virtualenv + pyenv な python 環境で矢印キーが死んどる。
python あるあるの矢印キーや履歴利かない問題。

pip install readline して import readline してみると

ImportError: dlopen(/usr/local/var/pyenv/versions/3.5.2/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/var/pyenv/versions/3.5.2/lib/python3.5/lib-dynload/readline.cpython-35m-darwin.so
  Reason: image not found

libreadline.6.dylib はあるかなーと見てみると

/usr/local/opt/readline/lib
libhistory.7.0.dylib
libhistory.7.dylib@
libhistory.a
libhistory.dylib@
libreadline.7.0.dylib
libreadline.7.dylib@
libreadline.a
libreadline.dylib@

無い。

readline 6.x だった頃の fomula のハッシュ探して入れ直すのも面倒。大事でもないしリンクで絆創膏。

cd $(brew --prefix readline)/lib
ln -s libreadline.dylib libreadline.6.dylib

解決(あさっての方を見ながら)

hidekuro
雑食。私がQiitaで公開する独自コードは、特に記載がない限り CC0 https://creativecommons.org/publicdomain/zero/1.0/deed.ja とします。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away