我想知道是否有人可以解釋爲什麼突然間在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