Thiết bị đầu cuối OS-X hoạt động kỳ quặc sau khi chạy Python tương tác


11

Sau khi chạy python repl (2.7.10) trong thiết bị đầu cuối os-x và thoát, thiết bị đầu cuối không còn tiếng vang gõ vào đầu vào và một số điều kỳ lạ khác xảy ra. Nếu tôi chạy pythonlại và exit(), thì thiết bị đầu cuối dường như được khôi phục. Bây giờ tôi chỉ đóng tab và mở một cái mới, vì vậy tôi chưa thử nghiệm rộng rãi.

Tôi đoán điều này có liên quan đến cài đặt thiết bị đầu cuối, nhưng đó là một điều gần đây và tôi đã không thay đổi bất cứ điều gì tôi nhớ lại. Python được cài đặt macports, nếu có một cái gì đó để làm với các phụ thuộc khớp sai với một số thư viện giao diện điều khiển. 2.7.10 đã được cài đặt cách đây một thời gian và điều này đã không xảy ra sau khi cài đặt.

Nứt đốt ngón tay và mở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`

Ngoài ra, chạy lại python và đạt ctrl-dkết quả trong đầu ra này:

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

Tại sao bạn cài đặt Python qua macports? Python v2.7.10 được bao gồm trong El Cap và tôi nghĩ Yosemite ... Có điều gì đặc biệt mà bạn đang nhận được từ Mac Cổng không?
Benjamin Schollnick

Chà, sử dụng 2.7. Mọi thứ lớn hơn những gì đã được vận chuyển với mac. Không chạm vào python hệ thống (vấn đề tiêu chuẩn trên unixes), chạy 2.7 với các tùy chọn GIS tùy chỉnh được biên dịch, với gói mgmt cho những người đó, cũng như 3,4 cùng một lúc. Nhưng lý do thực sự bạn nên làm là không fsck với hệ thống python.
Andrew Backer

Là ứng dụng python thực hiện bất kỳ loại quản lý cửa sổ? (ví dụ: Sử dụng lời nguyền, NCurses, v.v.)
Benjamin Schollnick

Không có ứng dụng, chỉ cần gõ pythonvà sau đóctrl-d
Andrew Backer

Câu trả lời:


12

Có một lỗi mở trong MacPorts về vấn đề này:

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

Nó nói rằng việc cài đặt python với tùy chọn "+ readline" sẽ khắc phục vấn đề mà tôi đã xác minh bằng cách tự mình thực hiện.

sudo port uninstall python27
sudo port install python27 +readline

9
Chết tiệt, cảm ơn vì đã tìm thấy báo cáo lỗi đó. FWIW, thông thường không thể gỡ cài đặt python27 (quá nhiều gói phụ thuộc vào nó, thông thường), vì vậy bạn nên xây dựng lại thay thế. Chạy đi sudo port selfupdate && sudo port clean python27 && sudo port install python27 +readline. Nếu cây cục bộ của bạn đã hết hạn, thì nó sẽ không có sẵn biến thể + readline; những selfupdatesẽ khắc phục điều đó.
Andrew Backer

8

Các chế độ đầu cuối được ứng dụng của bạn đặt thành thô hoặc ngắt, và khi thoát bất thường, các chế độ không được khôi phục. Cụ thể, tính năng ánh xạ Enterkhóa (control / M aka carcar return) sang dòng mới (control / J aka feed feed) thường bị vô hiệu hóa trong trường hợp này. Bạn có thể khắc phục sự cố với trả lại bằng cách nhập

stty sane

theo dõi bởi controlJ

Điều đó ít nhất sẽ cho phép bạn nhập lại các lệnh, mặc dù các ký tự chỉnh sửa như backspacecó thể không được gán cho các chức năng thông thường của chúng.

Một số cũng có thể khuyên sử dụng resetlệnh, nhưng các triệu chứng đã cho không liên quan đến những gì chương trình đó làm.

Để đọc thêm


stty echodường như khắc phục sự cố ( stackoverflow.com/questions/32475928/python3-messes-up-terminal ). Không chắc chắn nếu nó chăm sóc tất cả. Tôi nghĩ rằng đôi khi có một chút sai với con trăn của tôi, vì lỗi cú pháp yêu cầu tôi phải nhấn dòng mới theo cách thủ công để bắt đầu nhập một lệnh mới và nó không nên như vậy.
Andrew Backer

Mặc dù điều này không khắc phục được sự cố, nhưng ít nhất nó cũng cho phép tôi khắc phục sự cố. Đó là đủ tốt cho tôi, bây giờ. Nếu có bất kỳ cách nào để tìm hiểu lý do tại sao điều này xảy ra, tôi rất muốn biết.
Andrew Backer

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.