OS XのPythonシェルで「b」の文字を入力できない


8

OS XのPythonシェルの「b」の文字に問題があります。「b」を入力できませんが、「B」は正常に機能しました。

この問題を解決するにはどうすればよいですか?


「入力できません」とはどういう意味ですか?Shiftキーも押さない限り、何かが原因でbキーを押すことが物理的に妨げられますか?または、ボタンを押しても効果がないのですか?または、「b」のみを含む行を入力すると、エラーメッセージが表示されますか?
ヨアヒムザウアー

正確には何ですか?正確に何をしている/入力していますか、正確に何が起こり、正確にエラーメッセージは何ですか(ある場合)?

他の文字に影響がない場合は、キーボードのハードウェアの問題のように聞こえるため、スーパーユーザーに移行する必要があります。
パビウム2011年

「B」の文字を押すと、任意の効果はないとコンソールに「B」の文字が、私は「B」文字(SHIFT + B)を押し、次に「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をインストールしたところ、今朝この問題に遭遇しました。私のpythonスタートアップファイルを更新し、すべてが再び良いです。これは非常に特殊な(そして非常に奇妙な)副作用です。
Seth

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.orgvpythonから入手した最新バージョンのビジュアルpython を使用しています。

最新のバイナリを使用し、その指示に従ってvpythonをインストールしました。インストーラーが付属しているので、ポイントアンドクリックです。これはPython 2.7.1の修正バージョンです。32ビット版です。(私はそれらを64ビットに移植していないと思います)。次に、VPython-Mac-Py2.7-5.71をインストールしました。私はからscipyのダウンロードによってこれを続いwww.scipy.orgしてからmatplotlibのmatplotlib.sourceforge.netこれらのインストールのすべては、インストーラを使用しています。

開発ツールのアイドル、またはvpythonのバリアントであるvidleからpythonを実行しても問題ありません。ターミナルを開いてbashシェルからpythonを実行すると、シェルはキーボードの「b」キーを認識しません。「文字b」を入力する代わりに、「ベル」音が聞こえます。ただし、文字「B」を入力できます。このキーは、誤った非表示の「文字」、おそらく古いASCIIコードの「ベル」文字にマッピングされているようです。

エミュレーションをxterm、vt100、vt102に変更してみました。また、UTF-8を使用するなど、さまざまなエンコーディングスキームを試しました。command-bなどの特殊キーのさまざまな組み合わせも押しました。何も動作しませんでした。

私の唯一の回避策は、アイドルまたはバイドルからスクリプトを作成することです。

これが問題の明確化に役立つことを願っています。


私はこれについてもう少し作業しました...他のPythonインターフェースで他の人が同様の問題を抱えているようです 私のシステムには、Pythonの起動時に解析される.pythonrc.pyファイルがあります(PYTHONSTARTUPによってポイントされます)。このファイルでは、2つのモジュールがrlcompleterとreadlineに読み込まれます。次に、readline.parse_and_bind( "bind -v")を呼び出します。この呼び出しは、シェルからバインディングをコピーしてreadlineモジュールを初期化します(bashシェルに移動して「bind -v」(引用符なし)と入力すると、readlineモジュールを確認できます)。これらの1つは問題を作成する必要があります。その行にコメントを付けると(その前に#を置きます)、問題は解消されます。
ga mercier、2011年

1
投稿を編集してそれを含めることができ、読みやすくなる場合があります。
slhck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.