2010-07-15 33 views
8

Tôi nhúng ipython vỏ trong một kịch bản Django (với máy chủ phát triển, ví dụ như runserver tại localhost) như thế này:ipython - "vỡ" vỏ/terminal sau realoading Django

... 
from IPython.Shell import IPShellEmbed 
ipshell = IPShellEmbed() 
ipshell() 
... 

mà mang lại cho tôi vỏ tương tác tại nơi mong muốn. Bây giờ, nếu sửa đổi mã nguồn, Django sẽ tự động tải lại, có thể không bỏ chính xác trình vỏ iPython, và "ngắt" trình mô phỏng thiết bị đầu cuối của tôi (xterm, konsole) - văn bản trở nên vô hình, v.v. (cùng một hiệu ứng nếu iPython chạy bên trong Django bị chấm dứt bằng Ctrl + d).

Bất kỳ đề xuất nào có thể gây ra điều này? (Tôi có thể sử dụng iPython một cách sai lầm, nhưng ai biết).

+0

Tôi đã gặp sự cố tương tự với 'pdb nhập; pdb.set_trace', vì vậy nó có thể không phải là một vấn đề cụ thể cho iPython. Tuy nhiên, tôi đã chỉ nhận thấy điều này xảy ra khi sử dụng virtualenv (với virtualenvwrapper), vì vậy có lẽ đó là những gì gây ra nó. –

+0

Có cùng một vấn đề, rất thích anwser. +1 –

+0

Không chỉ virtualenv. Nó xảy ra cho tôi chạy python mặc định trong Ubuntu 10.10. – thepeer

Trả lời

4

Tôi không thể trả lời câu hỏi tại sao nó sai, nhưng tôi có thể cho bạn biết cách khôi phục từ đó: thoát khỏi máy chủ gỡ lỗi và cung cấp lệnh reset.

Một cách khác để ngăn chặn điều này xảy ra là sử dụng công tắc --reload trên lệnh runserver. Điều này có nghĩa là Django sẽ không tải lại sau khi thay đổi, nhưng nó cũng không phá vỡ trình gỡ lỗi của bạn.

+0

Cảm ơn! 'reset' cũng hoạt động xung quanh vấn đề với 'pdb nhập; pdb.set_trace() 'được Aram Dulyan ghi chú ở trên. –

Các vấn đề liên quan