Не могу набрать букву «b» в оболочке Python в OS X

8

У меня проблема с моим буквой "b" в оболочке Python в OS X. Я не могу набрать "b", но "B" работал нормально.

Как я могу решить эту проблему?

Сэм
источник
Что ты имеешь в виду под «не могу печатать»? Что-то физически мешает вам нажать клавишу b, если вы не нажмете Shift? Или нет никакого эффекта от нажатия кнопки? Или вы получаете сообщение об ошибке, когда в строке содержится только "b"?
Иоахим Зауэр
Что именно ? Что именно вы делаете / вводите, что именно происходит и что именно является сообщением об ошибке (если оно есть)?
Если никакие другие буквы не затрагиваются, это похоже на аппаратную проблему с вашей клавиатурой и должно быть перенесено в Super User.
павильон
При нажатии буквы «b» не действует и не печатается буква «b», но когда я нажимаю букву «B» (Shift + b), в консоли
2
Смотрите также этот вопрос .
Кейт Томпсон,

Ответы:

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
+1 Я только вчера установил python из homebrew и столкнулся с этой проблемой сегодня утром. Обновил мой файл запуска 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
GodOfWare
источник
1

У меня такая же проблема. Это происходит, когда вы используете версию Python для MacPorts в Snow Leopard.

Я не вижу этой проблемы в Apple Python, которая поставляется с Mac OS X. Поэтому, обходной путь должен заключаться в установке PYTHONPATHуказателей на пакеты MacPorts:

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

(или другая версия Python) и использовать Python от Apple.

slhck
источник
1

К сожалению, обходной путь не является мудрым.

Apple предполагает, что ее версия не изменяется при выполнении обновлений и других функций. Вместо этого рекомендуется, чтобы, если вы хотите обновить Python или развернуть его, вы устанавливаете локальную версию, либо в /optвашей , либо в вашей домашней папке.

У меня также есть та же проблема, и я не использую версию Python для MacPorts.


Я использую последнюю версию vpythonvisual python с сайта www.vpython.org под Mac OX X Lion, работающую на последнем MacBook Air (поколение 3).

Я установил vpython, используя их последние двоичные файлы и используя их инструкции. Он поставляется с установщиком, так что наведите и нажмите. Это модифицированная версия Python 2.7.1. Это 32-битная версия. (Я полагаю, что они не портировали его на 64 бита). Затем я установил VPython-Mac-Py2.7-5.71. За этим последовали scipy с www.scipy.org и matplotlib с matplotlib.sourceforge.net Все эти установки используют установщик.

Когда я запускаю python без их средства разработки, бездействия или варианта vpython, vidle, у меня нет проблем. Если я открываю терминал и запускаю python из оболочки bash, оболочка не распознает клавишу «b» на клавиатуре. Это даст вам звук «звонка» вместо того, чтобы вводить «символ b». Тем не менее, вы можете ввести букву «B». Похоже, этот ключ сопоставлен с каким-то неправильным не отображаемым «символом», возможно, «колокольчиком» в старом коде ASCII.

Я попытался изменить эмуляцию на xterm, vt100, vt102. Я также играл с различными схемами кодирования, такими как просто использование UTF-8. Я также нажимал различные комбинации специальных клавиш, таких как command-b и т.д.

Мой единственный обходной путь - писать сценарии бездействия или виджета.

Я надеюсь, что это помогает прояснить проблему.

Ga Mercier
источник
Я работал над этим немного больше ... похоже, у других есть похожие проблемы с другими интерфейсами Python. В моей системе у меня есть файл .pythonrc.py, который анализируется при запуске python (на что указывает PYTHONSTARTUP). В этот файл загружаются два модуля rlcompleter и readline. Затем он вызывает readline.parse_and_bind ("bind -v"). Этот вызов инициализирует модуль readline, копируя привязки из оболочки (вы можете увидеть свои, войдя в оболочку bash и введя «bind -v» (без кавычек)). Один из них должен создать проблему. Если я прокомментирую строку (поставьте # перед ней), проблема исчезнет.
ga mercier
1
Вы можете отредактировать свой пост, чтобы включить его, это может облегчить чтение.
Slhck