Tôi muốn sửa đổi cách IPython xử lý các lỗi nhập theo mặc định. Khi tôi thử nghiệm một cái gì đó trong vỏ IPython, tôi thường quên lần đầu tiên nhập os
, re
hoặc bất cứ điều gì tôi cần. Một vài báo cáo đầu tiên thường làm theo mô hình này:Nhập IPython Ý nghĩa của tôi
In [1]: os.path.exists("~/myfile.txt")
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-0ffb6014a804> in <module>()
----> 1 os.path.exists("~/myfile.txt")
NameError: name 'os' is not defined
In [2]: import os
In [3]: os.path.exists("~/myfile.txt")
Out[3]: False
Chắc chắn, đó là lỗi của tôi vì có những thói quen xấu và chắc chắn, trong một kịch bản hoặc chương trình thực tế mà làm cho tinh thần, nhưng trong vỏ Tôi thà rằng IPython tuân theo nguyên tắc DWIM DWIM, ít nhất cố gắng để nhập nội dung tôi đang cố gắng sử dụng.
In [1]: os.path.exists("~/myfile.txt")
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-0ffb6014a804> in <module>()
----> 1 os.path.exists("~/myfile.txt")
NameError: name 'os' is not defined
Catching this for you and trying to import "os" … success!
Retrying …
---------------------------------------------------------------------------
Out[1]: False
Nếu điều này không thể thực hiện với IPython vani, tôi phải làm gì để thực hiện công việc này? Có phải là wrapper kernel cách dễ nhất tiếp theo không? Hoặc điều này nên được thực hiện trực tiếp trong lõi, với một lệnh ma thuật?
Lưu ý, điều này khác với those kind of question nơi ai đó muốn luôn tải các mô-đun được xác định trước. Tôi không. Vì tôi không biết những gì tôi sẽ làm việc trên, và tôi không muốn tải mọi thứ (và cũng không làm tôi muốn giữ danh sách các mọi thứ cập nhật
_Có nghĩa là, tập lệnh này infi nite-loops trên một số error_ - nếu kết quả nhập khẩu trong NameError và clean-up thường làm cùng một nhập khẩu ... - bạn đã biết những gì sẽ xảy ra. Bạn cần kiểm tra xem mô-đun bạn đang cố nhập có tồn tại không. –
@Rogalski Tôi sẽ làm như thế nào? Tôi biết 'pip' có phương pháp để làm điều này nhưng ai đó có thể đang nhập một thứ gì đó trên máy cục bộ của họ. –
Chạy: 'thử: nhập bất cứ điều gì ngoại trừ ImportError: oops_failed_to_import_handle_it()'? –