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)
>>> [~]:
この問題のMacPortsには未解決のバグがあります。
https://trac.macports.org/ticket/48807
python "+ readline"オプションを指定してインストールすると問題が解決するということですが、自分で確認しました。
Sudo port uninstall python27
Sudo port install python27 +readline
ターミナルモードは、アプリケーションによってrawまたはcbreakに設定され、異常終了してもモードは復元されません。特に、 Enternewlineへのキー(制御/ M別名キャリッジリターン)(制御/ J別名ラインフィード)は、この場合無効にされることがよくあります。次のように入力すると、返品の問題を修正できます。
stty sane
に続く controlJ
これにより、少なくともコマンドを再入力できるようになりますが、 backspace 通常の機能には割り当てられない場合があります。
reset
コマンドの使用を勧める人もいますが、指定された症状はそのプログラムの動作には関係ありません。
さらに読むために
stty
マニュアルページはGNUです。これは私のために働いた(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