214

インタラクティブな python シェルのようなシェルでは、通常、矢印キーを使用して現在の行を移動したり、前のコマンドを (上向き矢印で) 取得したりできます。

しかし、別のマシンに ssh して起動pythonすると、次のようなセッションが発生します。

>>> import os 
>>> ^[[A    

最後の文字は上矢印から来ます。または、左矢印を使用します。

>>> impor^[[D

どうすればこれを修正できますか?

通常の bash では、矢印キーが正常に機能します。奇妙な動作は、インタラクティブな python (または perl など) シェルでのみ発生します。

4

25 に答える 25

118

readlineパッケージをインストールすることでこの問題を解決しました:

pip install readline
于 2014-10-14T08:46:59.450 に答える
51

OS X では、Xcode の更新が壊れることがありreadlineます。解決:

brew uninstall readline
brew upgrade python3
brew install readline
pip3 install readline

それでも問題が解決しない場合は、次を使用して削除し、次readlineを使用pipしてインストールしてみてeasy_installください。

pip3 uninstall readline
easy_install readline
于 2016-10-25T01:20:17.777 に答える
39

readline が有効になっていないようです。変数が定義されているかどうかを確認してくださいPYTHONSTARTUP。私にとっては変数が指して/etc/pythonstartおり、そのファイルはインタラクティブになる前にpythonプロセスによって実行され、readline/history処理をセットアップします。

@chown のおかげで、これに関するドキュメントがここにあります: http://docs.python.org/2/tutorial/interactive.html

于 2009-05-21T14:27:22.183 に答える
23

私は最近この問題にpip install readline遭遇し、(mac osxでは機能しません)について多くのことを読んだ後pip install gnureadline、満足できなかったので、これはPythonコンソールで矢印キーを使用できるようにする私のセットアップです:

  1. を使用してgnureadlineをインストールしますpip install gnureadline

これimport gnureadlineで、矢印キーが期待どおりに機能するはずです。それらを自動的に機能させるには、次の手順に従います。

  1. ファイルを作成 (または追加) ~/.startup.py:import gnureadline
  2. ファイルに追加~/.bash_profile:export PYTHONSTARTUP=~/.startup.py

動作しないものの、以前のセットアップで動作したことの 1 つは、gnureadline の自動インポートですpdb.set_trace()。誰かがこの問題に対する良い解決策を持っているなら、私はコメントに感謝します.

于 2019-03-11T13:30:58.863 に答える
15
  1. readline-devel パッケージをインストールします。
  2. readline モジュールを使用して Python を再コンパイルする
  3. ビンゴ!
于 2010-05-10T20:04:31.253 に答える
11

Python 3.3のubuntu 12.04で私のために働いた手順は次のとおりです。

1) ターミナルを開いて書き込むsudo apt-get install libreadline-dev

2) Python 3.3.2 のソース ファイルをhttp://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.xzからダウンロードします。

3)それを抽出し、シェルで Python-3.3.2/ ディレクトリに移動します

4) 次のコマンドを実行します。

./configure
make
make test
sudo make install
于 2013-06-30T19:44:05.433 に答える
5

CentOSでは、これを修正します

yum install readline-devel

次に、python 3.4 を再コンパイルします。

OpenSUSE では、これを次のように修正します。

pip3 install readline

Valerio Criniの答えに従ってください。

おそらく「pip3 install readline」が一般的な解決策です。CentOS は試していません。

于 2015-01-24T22:32:03.773 に答える
3

次のようにしてこれを修正しました。

  • yum インストール readline-devel
  • pip インストール readline

    • ここで別のエラーが発生しました:

      gcc: readline/libreadline.a: No such file or directory

      gcc: readline/libhistory.a: No such file or directory

      インストールしてこれを修正しましたpatch

      yum install patch

その後、pip install readline正常に実行でき、Python シェルのエスケープ文字が解決されました。

参考までに、私はRedHatを使用しています

于 2016-01-15T03:24:25.493 に答える
2

-tパラメーターを指定して sshを呼び出し、sshに仮想端末を割り当てるように指示しましたか?

マニュアルページから:

-t
疑似 tty 割り当てを強制します。これは、リモート マシン上で任意の画面ベースのプログラムを実行するために使用できます。これは、メニュー サービスを実装する場合などに非常に役立ちます。複数の -t オプションを指定すると、ssh にローカル tty がない場合でも、tty の割り当てが強制されます。

さらに、別の投稿で提案されているように、サーバーでTERM環境変数を正しく設定する必要がある場合もあります。

于 2009-05-21T14:22:24.440 に答える
1

別の SSH クライアントを使用してみましたか? 一部の SSH クライアントには、さまざまなリモート プロセス用の特別な組み込みキーマッピングがあります。私はこれにemacsでよく遭遇しました。

どのクライアントを使用していますか? Putty と SecureCRT の動作を比較することをお勧めします。

于 2009-05-21T13:57:57.283 に答える
0

環境変数$TERMは、[a]正常に機能する場合と、[b]正常に機能しない場合にどのように設定されますか?多くの場合、環境設定がこのような問題の鍵となります。

于 2009-05-21T14:03:52.153 に答える
0

サーバー上で実行されているキー コード ライブラリを取得してみてください。それでもうまくいかない場合は、読み取りキー機能を備えたライブラリをダウンロードしてみてください。

于 2013-06-25T20:49:56.227 に答える
0

Ubuntu 14.0 で Python 2.7 をビルドしようとしていました。libreadline-dev が必要です。ただし、apt-get から取得すると、現在のバージョンは 6.3 であり、Python 2.7 とは互換性がありません (Python 3 については不明)。たとえば、以前のバージョンの readline で定義されていたデータ型 "Function" と "CPPFunction" は、ここで報告されているように 6.3 で削除されました。

https://github.com/yyuu/pyenv/issues/126

つまり、以前のバージョンの readline のソース コードを取得する必要があります。ライブラリ用に apt-get から libreadline 5.2 をインストールし、ヘッダー ファイル用に 5.2 のソース コードを取得します。それらを /usr/include に入れてください。

最後に、問題は解決されました。

于 2015-05-13T16:14:22.530 に答える