Mein Jupyter / IPython-Notizbuch führt Funktionen in einem externen .py aus.
Ich muss Haltepunkte innerhalb dieser Funktionen setzen, Variablen prüfen, Einzelschritt, usw.
Es ist einfach nicht sinnvoll, eine Kombination von print
-Anweisungen zu verwenden und Ausnahmen auszulösen, um eine Zelle vorzeitig zu verlassen.
Ich brauche einen Workflow.
Ist es möglich, einen Editor / eine IDE von Drittanbietern anzuschließen, um die .py-Datei anzuzeigen und sie irgendwie mit der Python-Laufzeitumgebung zu verbinden, die Jupyter / IPython verwendet?
Wenn ich also einen Breakpoint in meinem externen .py unter Verwendung meiner IDE setze und eine Zelle in dem Notizbuch ausführe, die den Breakpoint trifft, kann ich weiterhin manuell innerhalb der IDE navigieren.
BEARBEITEN: Ich habe Ссылка Ссылка
BEARBEITEN Ссылка & lt; - dieses Video nähert sich dem, wonach ich suche, ich kann es einfach Ich verstehe nicht, wie man alles zusammenstellt. Dieses Video zeigt Spyder, der eine IDE mit einer IPython-Eingabeaufforderung ist ... Ich frage mich, ob ich vielleicht mein Notebook durch die Eingabeaufforderung laufen lassen und es debuggen kann.
EDIT: Es sieht so aus, als ob PyCharm genau das tut, wonach ich suche: Ссылка
EDIT: Ich bin gerade dabei, PyCharm dazu zu bringen, sich zu benehmen. Ich werde die Details in einer Antwort zur Verfügung stellen, wenn ich es sortiere.
Ist es möglich, einen Editor / IDE von Drittanbietern anzuschließen, um die .py-Datei anzuzeigen? und verbinden Sie es irgendwie mit der Python-Laufzeit, die Jupyter / IPython benutzt?
Ja, ist möglich .
Sie können eine Datei Seite an Seite mit der iPython-Laufzeitumgebung öffnen. Es ist möglich, Definitionen aus der externen Datei mithilfe von Tastenkürzeln direkt an die Eingabeaufforderung zu senden und Haltepunkte, Einzelschritt und Inspect-Variablen mithilfe des Standard-Python-Debuggers pdb aus der iPython-Eingabeaufforderung auszuwählen.
Auto-Vervollständigung funktioniert gut. Durch einfaches Schreiben von import XXX
wird Emacs auf alle Funktionen im Modul XXX
aufmerksam gemacht.
Hier ist ein Beispiel Screenshot:
Und dies sind die Schritte, die ich unternommen habe, um zum Screenshot zu gelangen. *
C-c C-p
, um einen iPython-Prozess zu starten und eine Datei mit ihm zu verbinden . Beachten Sie, dass der iPython-Prozess voll funktionsfähig ist. Ich kann alle magischen Methoden darauf anwenden. M-m m d b
auf Fügen Sie den Haltepunkt in die gewünschte Zeile ein (in Form eines pdb-Imports) C-M-x
, um die Definition an die iPython-Eingabeaufforderung zu senden . Beachten Sie im Screenshot, dass ich unique_everseen
anrufe, ohne es jemals in die Eingabeaufforderung eingegeben zu haben. Die Definition wurde direkt aus der Datei gesendet (deshalb haben wir eine leere Zelle 2 , als visuelle Rückmeldung, dass Emacs hat etwas getan.) n
auf gehe zur nächsten Anweisung. Nun, Ich habe noch nicht einmal an der Oberfläche gekratzt, was Emacs bieten kann. Wenn dich das interessiert, würde ich vorschlagen, es zu untersuchen. Es ist wirklich mächtig und hat eine großartige, sehr hilfreiche und aktive Community.
Um die Python-Konfiguration sofort zu starten, ohne etwas selbst konfigurieren zu müssen, installieren Sie einfach Spacemacs , eine beliebte Emacs-Distribution (Anaconda ist für Python, Spacemacs für Emacs). Die Installationsanleitung finden Sie unter dem Link.
Verwenden von Emacs zum Bearbeiten von iPython-Notizbüchern.
Ein Paket namens EIN (Emacs iPython Notebooks) "bietet einen IPython Notebook-Client und integrierte REPL in Emacs."
Damit es funktioniert, öffnen Sie Ihren iPython-Notebook-Server von jedem Terminal mit ipython notebook
und rufen Sie die Funktion ein:notebooklist
auf.
Weitere Informationen finden Sie auf der Projektseite hier und auf der Spacemacs iPython-Notebook-Layerseite hier .
Insbesondere aus der EIN-Dokumentation:
Alle für den einfachen iPython + Datei-Workflow beschriebenen Funktionen sind für iPython-Notizbücher (* .ipynb) verfügbar.
Screenshots hier.
In Jupyter können Sie den Python-Debugger verwenden, indem Sie unter zwei Zeilen einen Haltepunkt hinzufügen.
%Vor%Die Codeausführung wird bei diesem Schritt angehalten und Sie erhalten ein Textfeld zum Debuggen von Python-Code. Ich habe einen Screenshot für dasselbe beigefügt.
Sie können sich auf die Dokumentation von pdb beziehen, um die Vorgänge auszuführen, die Sie mit Ausnahme des Druckvorgangs durchführen können Ihre Variablen
Wir haben gerade die erste Version eines Python Visual Debuggers für Jupyter Notebooks veröffentlicht, die von Interesse sein könnte. Sie finden die Details hier .
(Disclaimer: Ich bin der leitende Entwickler)
Tags und Links python debugging ipython jupyter-notebook spyder