无法在OS X的Python Shell中输入“ b”字母


8

我在OS X的Python Shell中遇到“ b”字母问题。我无法键入“ b”,但“ B”工作正常。

我该如何解决这个问题?


“不能输入”是什么意思?除非您同时按下Shift键,否则实际上会阻止您按b键吗?还是按下按钮没有效果?还是在仅包含“ b”的行时收到一些错误消息?
Joachim Sauer

到底是什么?您到底在做什么/键入什么,到底发生了什么,错误消息到底是什么(如果有的话)?

如果没有其他字母受到影响,这听起来像是键盘的硬件问题,应将其迁移到超级用户。
pavium 2011年

当按下“ b”字母没有任何作用并且不键入“ b”字母,但是当我按下“ B”字母(Shift + b)时,然后在控制台中键入“ B”字母

2
另请参阅此问题
基思·汤普森

Answers:


9

您遇到的问题.pythonstartup是:

 readline.parse_and_bind("bind ^I rl_complete") # darwin libedit

.pythonstartup将解决它...

try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    if 'libedit' in readline.__doc__:
        readline.parse_and_bind("bind ^I rl_complete")
    else:
        readline.parse_and_bind("tab: complete")

确实为我解决了同样的问题!
zmo 2012年

+1我昨天刚从自制软件安装了python,今天早晨遇到了这个问题。更新了我的python启动文件,一切恢复正常。这是非常具体的(而且非常奇怪)的副作用。
塞斯

2

首先,直到我将python 2.7.1更新为2.7.3为止,这种情况才发生。就是说,修复程序已准备就绪:

旧行:

if(sys.platform == 'darwin'): #FIX

新队:

if(sys.platform == 'darwin') and 'libedit' in readline.__doc__: #FIX

我的〜/ .pythonrc中的完整代码

import atexit
import os
try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    import sys
    if(sys.platform == 'darwin') and 'libedit' in readline.__doc__: #FIX
    # OSX
        readline.parse_and_bind ("bind ^I rl_complete")
    else:
    # Linux
        readline.parse_and_bind("tab: complete")

historyPath = os.path.expanduser("~/.pyhistory")

def save_history(historyPath=historyPath):
    readline.write_history_file(historyPath)

if os.path.exists(historyPath):
    readline.read_history_file(historyPath)

atexit.register(save_history)
del atexit, save_history, historyPath

1

我有同样的问题。当您在Snow Leopard中使用MacPorts版本的Python时,会发生这种情况。

我没有在Mac OS X附带的Apple的Python中看到此问题。因此,解决方法应该是设置PYTHONPATH指向MacPorts软件包的指向:

/opt/local/lib/python/site-packages:/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ 

(或其他Python版本)并使用Apple的Python。


1

不幸的是,解决方法不是一个明智的选择。

Apple假定在进行升级和其他功能时其版本未更改。相反,建议您如果要升级python或扩展它,请在本地/opt文件夹或主文件夹下安装本地版本。

我也有同样的问题,并且我不使用MacPorts版本的python。


我正在使用运行在最新MacBook Air(第3代)中的Mac OX X Lion下的www.vpython.org上的最新版本的vpythonvisual python 。

我使用他们最新的二进制文件并按照他们的说明安装了vpython。它带有安装程序,因此很简单。这是Python 2.7.1的修改版本。它是32位版本。(我相信他们还没有将其移植到64位)。然后,我安装了VPython-Mac-Py2.7-5.71。接下来是来自www.scipy.org的scipy 和来自matplotlib.sourceforge.net的matplotlib。所有这些安装都使用安装程序。

当我用他们的开发工具(闲置)或vpython变体vidle运行python时,我没有任何问题。如果我打开终端并从bash shell运行python,该shell将无法识别键盘中的“ b”键。它会给您“铃”声,而不是键入“字符b”。但是,您可以输入字母“ B”。看起来此键已映射到一些不正确的未显示“字符”,可能是旧ASCII代码中的“响铃”字符。

我尝试将仿真更改为xterm,vt100,vt102。我还使用了不同的编码方案,例如仅使用UTF-8。我还按了特殊的组合键,例如Command-B等。没有任何效果。

我唯一的解决方法是将脚本闲置或删除。

我希望这有助于澄清问题。


我在这方面做了更多的工作……看起来其他人在其他python接口上也有类似的问题。在我的系统中,我有一个.pythonrc.py文件,该文件在python启动时被解析(由PYTHONSTARTUP指向)。在此文件中,加载了两个模块rlcompleter和readline。然后,它调用readline.parse_and_bind(“ bind -v”)。此调用通过从shell复制绑定来初始化readline模块(您可以通过进入bash shell并键入'bind -v'(不带引号)来看到您的绑定)。其中之一必须引起问题。如果我注释该行(在它前面的#号),问题就消失了。
ga mercier 2011年

1
您可以编辑您的帖子以包含该内容,这样可能会使其更易于阅读。
slhck 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.