Ich habe ein Problem mit meinem Buchstaben "b" in der Python-Shell unter OS X. Ich kann "b" nicht eingeben, aber "B" hat einwandfrei funktioniert.
Wie kann ich dieses Problem lösen?
Ich habe ein Problem mit meinem Buchstaben "b" in der Python-Shell unter OS X. Ich kann "b" nicht eingeben, aber "B" hat einwandfrei funktioniert.
Wie kann ich dieses Problem lösen?
Antworten:
Die problematische Linie in Ihrem .pythonstartup
ist so etwas wie:
readline.parse_and_bind("bind ^I rl_complete") # darwin libedit
Dies .pythonstartup
wird es beheben ...
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")
Erstens geschah dies erst, als ich Python 2.7.1 auf 2.7.3 aktualisierte. Das heißt, das Update steht auf dem Spiel:
alte Zeile:
if(sys.platform == 'darwin'): #FIX
Neue Zeile:
if(sys.platform == 'darwin') and 'libedit' in readline.__doc__: #FIX
Der vollständige Code in meinem ~ / .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
Ich habe das gleiche Problem. Dies geschieht, wenn Sie die MacPorts-Version von Python in Snow Leopard verwenden.
Ich sehe dieses Problem nicht in Apples Python, das mit Mac OS X geliefert wird. Daher sollte die Problemumgehung darin bestehen, auf die PYTHONPATH
MacPorts-Pakete zu verweisen:
/opt/local/lib/python/site-packages:/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/
(oder eine andere Python-Version) und verwenden Sie Apples Python.
Leider ist die Problemumgehung nicht sinnvoll.
Apple geht davon aus, dass seine Version bei Upgrades und anderen Funktionen unverändert bleibt. Stattdessen wird empfohlen, dass Sie eine lokale Version entweder unter /opt
oder in Ihrem Home-Ordner installieren, wenn Sie Python aktualisieren oder erweitern möchten .
Ich habe auch das gleiche Problem und verwende nicht die MacPorts-Version von Python.
Ich verwende die neueste Version von vpython
Visual Python von www.vpython.org unter Mac OX X Lion, das im neuesten MacBook Air (Generation 3) ausgeführt wird.
Ich habe vpython mit der neuesten Binärdatei und den Anweisungen installiert. Es wird mit einem Installationsprogramm geliefert, sodass Sie mit der Maus klicken können. Dies ist eine modifizierte Version von Python 2.7.1. Es ist eine 32-Bit-Version. (Ich glaube, sie haben es nicht auf 64 Bit portiert). Ich habe dann VPython-Mac-Py2.7-5.71 installiert. Ich folgte mit scipy von www.scipy.org und matplotlib von matplotlib.sourceforge.net. Alle diese Installationen verwenden ein Installationsprogramm.
Wenn ich Python aus dem Entwicklungstool Idle oder der Vpython-Variante Vidle starte, habe ich keine Probleme. Wenn ich ein Terminal öffne und Python über eine Bash-Shell ausführe, erkennt die Shell die Taste "b" auf der Tastatur nicht. Es gibt Ihnen einen "Glockenton", anstatt das "Zeichen b" einzugeben. Sie können jedoch den Buchstaben 'B' eingeben. Es sieht so aus, als wäre dieser Schlüssel einem falschen, nicht angezeigten 'Zeichen' zugeordnet, möglicherweise dem 'Glocken'-Zeichen im alten ASCII-Code.
Ich habe versucht, die Emulation in xterm, vt100, vt102 zu ändern. Ich habe auch mit verschiedenen Codierungsschemata gespielt, wie zum Beispiel mit UTF-8. Ich habe auch verschiedene Kombinationen von Spezialtasten wie Befehl-B usw. gedrückt. Nichts hat funktioniert.
Meine einzige Problemumgehung besteht darin, Skripte im Leerlauf oder im Leerlauf zu schreiben.
Ich hoffe, dies hilft, das Problem zu klären.