Setelah menjalankan python repl (2.7.10) di terminal os-x dan keluar, terminal tidak lagi memasukkan input yang diketik dan beberapa hal aneh lainnya terjadi. Jika saya jalankan python
lagi dan exit()
, maka terminal sepertinya dipulihkan. Saya sekarang hanya menutup tab dan membuka yang baru, jadi saya belum mengujinya secara ekstensif.
Saya kira ini terkait dengan pengaturan terminal, tetapi ini adalah hal yang baru dan saya belum mengubah apa pun yang saya ingat. Python diinstal dengan macports
, jika ada hubungannya dengan dependensi yang tidak cocok dengan beberapa perpustakaan konsol. 2.7.10 diinstal beberapa waktu yang lalu, dan ini tidak terjadi setelah instalasi.
Retak buku jari dan terbukaterminal
[~]: 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`
Selain itu, jalankan python lagi dan tekan ctrl-d
hasil pada output ini:
>>> ^D (ctrl-d, then hit enter, doesn't exit)
>>> ^D (...)
>>> ^D (...)
>>> exit() (typing exit() quits the session)
>>> [~]:
python
dan kemudianctrl-d
Jawaban:
Ada bug terbuka di MacPorts tentang masalah ini:
https://trac.macports.org/ticket/48807
Ia mengatakan bahwa menginstal python dengan opsi "+ readline" memperbaiki masalah, yang saya verifikasi dengan melakukannya sendiri.
sumber
sudo port selfupdate && sudo port clean python27 && sudo port install python27 +readline
. Jika pohon lokal Anda kedaluwarsa, maka tidak akan tersedia varian + readline; yangselfupdate
akan memperbaikinya.Mode terminal diatur oleh aplikasi Anda ke raw atau cbreak, dan ketika keluar secara tidak normal mode tidak dikembalikan. Secara khusus, fitur yang memetakan Enterkunci (control / M alias carriage return) ke baris baru (control / J alias umpan baris) sering dinonaktifkan dalam kasus ini. Anda dapat memperbaiki masalah dengan pengembalian dengan memasukkan
diikuti oleh controlJ
Itu setidaknya akan membiarkan Anda memasukkan perintah lagi, meskipun karakter pengeditan seperti backspacemungkin tidak ditugaskan untuk fungsi mereka yang biasa.
Beberapa mungkin juga menyarankan menggunakan
reset
perintah, tetapi gejala yang diberikan tidak relevan dengan apa yang program itu lakukan.Untuk bacaan lebih lanjut
stty
halaman manualnya adalah GNUsumber
stty echo
tampaknya untuk memperbaiki masalah ( stackoverflow.com/questions/32475928/python3-messes-up-terminal ). Tidak yakin apakah itu mengurus semuanya. Saya pikir sesuatu yang sedikit salah dengan python saya, karena kesalahan sintaks mengharuskan saya untuk secara manual menekan baris baru untuk mulai memasukkan perintah baru, dan seharusnya tidak seperti itu.Ini bekerja untuk saya (menggunakan OSX dan pyenv):
Sumber: https://medium.com/@pimterry/setting-up-pyenv-on-os-x-with-homebrew-56c7541fd331#.urbdkrc9l
sumber