Mac OS X中virtualenv里python shell无法使用光标键问题的解决

最近碰到一个奇葩问题,在系统python shell里使用光标是一切正常的,但是到了virtualenv里就不行了,变成各种转义符,不能正常移动光标。

搜了半天,都说跟readline有关,建议重新编译python,可是为什么系统的python是正常的呢?而且我是用homebrew安装的,应该也不会有问题啊。

试过很多方法,比如重装readline或virtualenv什么的,都不能解决。

最后是因为看到一个解决方案里说要修改pystartup脚本,加入 import readline 什么的,我就想试试直接在python shell里import看看,结果果然暴露了问题原因:

ImportError: dlopen(/Users/raptor/.virtualenvs/bottle/lib/python2.7/lib-dynload/readline.so, 2): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /Users/raptor/.virtualenvs/bottle/lib/python2.7/lib-dynload/readline.so
Reason: image not found

这就好办了,直接创建一个symbol link,从 libreadline.7.dylib 到 libreadline.6.dylib 即可。

ln libreadline.7.dylib libreadline.6.dylib

果然解决。