Não é possível digitar a letra "b" no shell Python no OS X

8

Estou com um problema com minha letra "b" no shell Python no OS X. Não consigo digitar "b", mas "B" funcionou bem.

Como posso resolver este problema?

Sam
fonte
O que você quer dizer com "não pode digitar"? Alguma coisa impede você de pressionar a tecla b, a menos que você também pressione Shift? Ou não há efeito de pressionar o botão? Ou você recebe alguma mensagem de erro quando você linha que contém apenas "b"?
Joachim Sauer
O que exatamente ? O que exatamente você está fazendo / digitando, o que exatamente acontece e qual é exatamente a mensagem de erro (se houver)?
Se nenhuma outra letra for afetada, isso soa como um problema de hardware no teclado e deve ser migrado para o Superusuário.
pavium 14/06
Ao pressionar letra "b" não fazer qualquer efeito e não digitar a letra "b", mas quando eu pressionar a letra "B" (Shift + b) em seguida, "B" Tipo de letra na consola
2
Veja também esta pergunta .
21411 Keith Thompson

Respostas:

9

A linha problemática no seu .pythonstartupé algo como:

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

Isso .pythonstartupirá corrigi-lo ...

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")
Gregg Lind
fonte
que resolveu o mesmo problema para mim!
Zmo
+1 Acabei de instalar o python do homebrew ontem e me deparei com esse problema esta manhã. Atualizei meu arquivo de inicialização python e tudo está bom novamente. É um efeito colateral muito específico (e extremamente estranho).
Seth
2

Primeiro, isso não aconteceu até que eu atualizei o python 2.7.1 para 2.7.3. Dito isto, a correção está em jogo:

linha antiga:

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

nova linha:

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

O código completo em meu ~ / .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
fonte
1

Eu tenho o mesmo problema. Isso acontece quando você usa a versão MacPorts do Python no Snow Leopard.

Não vejo esse problema no Python da Apple, que acompanha o Mac OS X. Portanto, a solução alternativa deve ser PYTHONPATHapontar os pacotes do MacPorts:

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

(ou uma versão diferente do Python) e use o Python da Apple.

slhck
fonte
1

Infelizmente, a solução alternativa não é sensata.

A Apple assume que sua versão é inalterada ao fazer atualizações e outras funções. Em vez disso, é recomendável que, se você deseja atualizar o python ou expandi-lo, instale uma versão local, na /optpasta inicial ou na pasta inicial.

Eu também tenho o mesmo problema e não uso a versão MacPorts do python.


Estou usando a versão mais recente do vpython, visual python, de www.vpython.org no Mac OX X Lion em execução no MacBook Air mais recente (geração 3).

Instalei o vpython usando o binário mais recente e usando as instruções. Ele vem com um instalador, portanto, aponte e clique. Esta é uma versão modificada do Python 2.7.1. É uma versão de 32 bits. (Eu acredito que eles não o portaram para 64 bits). Eu instalei o VPython-Mac-Py2.7-5.71. Eu segui isso por scipy em www.scipy.org e matplotlib em matplotlib.sourceforge.net Todas essas instalações usam um instalador.

Quando executo o python da ferramenta de desenvolvimento, ociosa ou da variante vpython, vidle, não tenho problemas. Se eu abrir um terminal e executar python a partir de um shell bash, o shell não reconhecerá a tecla "b" no teclado. Ele emitirá um som de 'campainha', em vez de digitar o 'caractere b'. No entanto, você pode inserir a letra 'B'. Parece que essa chave está mapeada para algum 'caractere' não exibido incorreto, possivelmente o caractere 'sino' no código ASCII antigo.

Tentei alterar a emulação para xterm, vt100, vt102. Eu também joguei com diferentes esquemas de codificação, como usar apenas UTF-8. Também pressionei diferentes combinações de teclas especiais, como comando-b etc. Nada funcionou.

Minha única solução alternativa é escrever scripts fora do modo ocioso ou vidle.

Espero que isso ajude a esclarecer o problema.

ga mercier
fonte
Eu trabalhei um pouco mais nisso ... parece que os outros têm problemas semelhantes com outras interfaces python. No meu sistema, tenho um arquivo .pythonrc.py que é analisado quando o python é iniciado (apontado por PYTHONSTARTUP). Neste arquivo, dois módulos são carregados rlcompleter e readline. Em seguida, chama readline.parse_and_bind ("bind -v"). Essa chamada inicia o módulo readline copiando as ligações do shell (você pode ver as suas entrando no shell bash e digitando 'bind -v' (sem aspas)). Um deles deve criar o problema. Se eu comentar a linha (coloque # na frente dela), o problema desaparecerá.
ga Mercier
11
Você pode editar sua postagem para incluir isso, facilitando a leitura.
Slhck #