Ich möchte ändern, wie IPython import-Fehler standardmäßig behandelt. Wenn ich etwas in der IPython-Shell prototype, vergesse ich normalerweise, zuerst os
, re
oder was auch immer ich brauche zu importieren. Die ersten paar Anweisungen folgen oft dieses Muster:Make IPython Import Was ich meine
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
Sicher, das ist meine Schuld für schlechte Gewohnheiten haben und sicher, in einem Skript oder echtes Programm, das Sinn macht, aber in der Schale Ich würde eher, dass IPython folgen dem DWIM-Prinzip, durch mindestens versucht zu importieren, was ich versuche zu verwenden.
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
Wenn dies mit einem Vanille-IPython nicht möglich ist, was habe ich zu tun, um diese Arbeit zu machen? Ist ein wrapper kernel der einfachste Weg vorwärts? Oder sollte dies direkt im Kern implementiert werden, mit einem magischen Befehl?
Hinweis, das ist anders als those kind of question wo jemand immer vordefinierte Module laden will. Ich nicht. Denn ich weiß nicht, was ich arbeiten werden, und ich will nicht alles (noch will ich halten die Liste der alles aktualisiert laden
_Currently, dieses Skript infi nite-loops bei einigen Fehlern_ - Wenn der Import zu einer Namensfehler- und Bereinigungsroutine führt, wird der gleiche Import durchgeführt ... - Sie wissen bereits, was passiert. Sie müssen überprüfen, ob das Modul, das Sie importieren möchten, existiert. –
@Rogalski Wie würde ich das tun? Ich weiß, 'pip' hat Methoden, um dies zu tun, aber jemand könnte etwas importieren, das auf ihrem lokalen Rechner ist. –
Run: 'versuchen: importieren was auch immer außer ImportError: oops_failed_to_import_handle_it()'? –