web-dev-qa-db-ja.com

Pythonインタラクティブに実行した後、OS-Xターミナルが異常に動作する

Os-xターミナルでpython repl(2.7.10)を実行して終了した後、ターミナルは入力された入力をエコーし​​なくなり、他の奇妙なことが起こります。pythonを再度実行するとexit()の場合、ターミナルは復元されたようです。今はタブを閉じて新しいタブを開くだけなので、十分にテストしていません。

これは端末の設定に関係していると思いますが、最近のことで、覚えていることは何も変更していません。 Pythonは、一部のコンソールライブラリとの依存関係の不一致と関係がある場合、macportsとともにインストールされます。2.7.10は少し前にインストールされましたが、これはインストール後に発生しませんでした。

Cracks knucklesそしてterminalを開きます

[~]: virtualenv-2.7 venv-test
[~]: source venv-test/bin/activate
[~]: python
>>> ^D>>>       *(press ctrl-d, the 2nd >>> is strange)
[~]:            *(type something like `ls-l`, nothing shows on console)
[~]: -bash: ls-l: command not found`

さらに、pythonを再度実行してctrl-d結果は次のようになります。

>>> ^D           (ctrl-d, then hit enter, doesn't exit)
>>> ^D           (...)
>>> ^D           (...)
>>> exit()       (typing exit() quits the session)
>>> [~]: 
11
Andrew Backer

この問題のMacPortsには未解決のバグがあります。

https://trac.macports.org/ticket/48807

python "+ readline"オプションを指定してインストールすると問題が解決するということですが、自分で確認しました。

Sudo port uninstall python27
Sudo port install python27 +readline
12
B. Beach

ターミナルモードは、アプリケーションによってrawまたはcbreakに設定され、異常終了してもモードは復元されません。特に、 Enternewlineへのキー(制御/ M別名キャリッジリターン)(制御/ J別名ラインフィード)は、この場合無効にされることがよくあります。次のように入力すると、返品の問題を修正できます。

stty sane

に続く controlJ

これにより、少なくともコマンドを再入力できるようになりますが、 backspace 通常の機能には割り当てられない場合があります。

resetコマンドの使用を勧める人もいますが、指定された症状はそのプログラムの動作には関係ありません。

さらに読むために

8
Thomas Dickey

これは私のために働いた(OSXとpyenvを使用して):

CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" \
LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib" \
PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs2 \
pyenv install -v 2.7.11

ソース: https://medium.com/@pimterry/setting-up-pyenv-on-os-x-with-homebrew-56c7541fd331#.urbdkrc9l

1
Joe Inner