我想知道是否有人可以解释为什么突然间在Python交互模式下所有箭头键都失败了?Python交互模式的历史和箭头键
当我按下按钮例如通过命令历史时,我得到“^ [[A”。与任何其他箭头键相同。
我不知道为什么会发生这种情况,它之前工作(在OS X雪豹)。有谁知道解决这个问题的方法吗?
非常感谢,
摹
我想知道是否有人可以解释为什么突然间在Python交互模式下所有箭头键都失败了?Python交互模式的历史和箭头键
当我按下按钮例如通过命令历史时,我得到“^ [[A”。与任何其他箭头键相同。
我不知道为什么会发生这种情况,它之前工作(在OS X雪豹)。有谁知道解决这个问题的方法吗?
非常感谢,
摹
你不会说你正在使用哪种Python,但是你提到的症状确实通常是由Python没有用readline
支持构建的。现在,OS X上的Python可以构建为使用GNU readline
库或Apple提供的editline
库(AKA libedit
)。您可以使用以下两个命令来精确显示您正在使用的Python。如果这不能帮助你弄清楚发生了什么,编辑你的问题来显示这些命令的输出。
下面是显示了OS X 10.6最近的MacPorts Python 2.6中的例子:
$ python -c 'import sys;print(sys.version);print(sys.executable)'
2.6.5 (r265:79063, Jul 15 2010, 01:53:46)
[GCC 4.2.1 (Apple Inc. build 5659)]
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python
$ otool -L $(python -c 'import readline; print(readline.__file__)')
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/readline.so:
/opt/local/lib/libreadline.6.1.dylib (compatibility version 6.0.0, current version 6.1.0)
/opt/local/lib/libncursesw.5.dylib (compatibility version 5.0.0, current version 5.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
路径前缀/opt/local/
是MacPorts的安装软件的默认位置,并从otool
输出表明这Python的readline
模块动态链接到MacPorts安装的GNU readline
库。
这种行为通常显示当你没有readline
支持。如果您使用MacPorts,请尝试port install readline
,看看它是否会解决它。您还可以看到this page进一步的解释。
(也有用知道:有些项目甚至不存在,如果在系统上使用readline
您可以通过使用rlwrap
(port install rlwrap
强制他们)例如:。rlwrap ocaml -init code.ml
将启动OCaml中,读code.ml,并用readline支持启动REPL)
我终于得到了这个工作。我只需要用easy_install安装readline,游标和退格开始神奇地工作。
sudo /opt/local/bin/easy_install-2.5 readline
如果使用的是自制的,这是一个简单的办法:
brew uninstall python brew uninstall readline brew install readline --universal brew install python
问题解决了,我(运行OS X小牛10.9.5)
我刚刚在python3 for OSX 10.10.1中使用readline。我必须将最后一行更改为'brew install python --readline --framework',然后我必须执行以下操作:(1)将'/ usr/local/share/python'添加到我的PATH中。 (2)'pip3.4安装readline'。然后我输入'python3',readline重新开始工作。 – 2015-01-26 11:57:12
这是要用一些其他版本的Python 2.7替换系统Python 2.7.10吗? – user5359531 2016-12-12 04:11:38
@ user5359531系统python不会被替换,但是如果你已经'brew install python',那么你按照这个过程,brew可以用新的替换_its_版本。检查:'哪个python',(报告brew的版本位于/ usr/local/bin/python),'brew unlink python &&哪个python报告系统版本,'brew link python'来恢复brew版本。它没有破坏性。 – ptim 2017-01-17 14:14:14
提示查看Python readline模块很有帮助。显然,我的实际上并没有链接到libreadline。我不知道为什么,尽管readline安装的很好。无论如何,'port -f卸载py27-readline;端口安装py27-readline'解决了它。 – Celada 2013-03-09 16:47:07