web-dev-qa-db-de.com

Wirklich verwirrt mit Jupyter Notebook, Lab, Erweiterungen und ipywidgets

Ich möchte eine interaktive JupyterLab Notebook-Anwendung erstellen und muss eine Reihe benutzerdefinierter Widgets erstellen. Also begann ich mich mit dieser Angelegenheit zu beschäftigen und je mehr ich aussehe, desto verwirrter werde ich. Zur Vereinfachung werde ich einige einfache Fragen stellen:

  1. Eine der gebräuchlichsten Arten, Widgets auf Jupyter Notebooks zu verwenden, ist die Verwendung der Bibliothek ipywidgets. Recht?
  2. Im Gegensatz zum klassischen Notebook kann das Notebook von JupyterLab JavaScript nicht direkt rendern. Daher können die Tutorials zur Erstellung benutzerdefinierter Widgets in den ipywidgets-Dokumenten nicht unter JupyterLab ausgeführt werden. Recht?
  3. Wenn Sie JavaScript auf dem Notebook von JupyterLab ausführen möchten, müssen Sie dies über eine Erweiterung tun. Bei ipywidgets muss man @ jupyter-widgets/jupyterlab-manager installieren. Recht?
  4. Wenn Sie mit der Bibliothek ipywidgets ein benutzerdefiniertes Widget schreiben möchten, gibt es zwei GitHub-Projekte, die Sie als Ausgangspunkt verwenden können: widget-cookiecutter und widget-ts-cookiecutter. Meines Erachtens basiert das erstere auf JavaScript, das zweite auf TypeScript. Der erste scheint für einige Typen inaktiv zu sein, während der zweite aktiver ist. Plant das JupyterWidgets-Team, sich auf TypeScript zu konzentrieren? Welcher sollte ich folgen?
  5. Die Cookiecutter-Projekte verfügen nicht wirklich über eine Dokumentation. Ich bin wirklich verwirrt und habe Schwierigkeiten, ihren Code zu verstehen. Klar, ich kann sie kopieren und einfügen und anfangen, herumzuspielen, bis ich herausgefunden habe, wie das Ganze funktioniert und was die "Haken" oder "Einstiegspunkte" im Code sind, aber ich würde es wirklich begrüßen, wenn mir jemand zusätzliche Hinweise geben könnte .
  6. Ist das JupyterWidgets ein "offizielles" Projekt des Jupyter-Projekts? Angesichts der geringen Anzahl der Mitglieder des Projekts frage ich mich, wie sicher es ist, meine Arbeit auf ipywidgets zu stützen. Denken Sie daran, dass das Projekt "DeclarativeWidgets" vor langer Zeit aufgegeben wurde.
  7. Gibt es andere Bibliotheken, die mehr Widgets implementieren als in ipywidgets und auch unter JupyterLab ausgeführt werden?
  8. Ich möchte eine Webanwendung für die serverseitige Datenverarbeitung erstellen. Mein ursprüngliches Ziel war es, eine App/einen Dienst zu erstellen, der vom Benutzer keine Codierung erwartet und alles durch die Verwendung von HTML/JavaScript-Widgets ausführt. Dies könnte mit einem Angular/React-Frontend und einem Python/Django/Flask-Backend implementiert werden. Später wurde mir jedoch klar, dass es Fälle gibt, in denen der Benutzer möglicherweise eine zusätzliche benutzerdefinierte/willkürliche Verarbeitung auf dem Server durchführen möchte. Deshalb habe ich JupyterLab in Betracht gezogen. Ich frage mich, ob es am besten ist und ob es möglich ist, zum Beispiel einfach eine normale Angular/Python-Schriftart/Back-End zu erstellen und diese irgendwie in eine JupyterLab-Erweiterung zu packen, die einen Mechanismus für den Zugriff auf die Daten von diesem bietet app/service und bringt es zur weiteren Bearbeitung in das Notebook.

Danke im Voraus

9
AstrOne

Im Allgemeinen sollte die stackoverflow-Frage versuchen, zu diesem Zeitpunkt nur eine Frage zu stellen. Ich werde versuchen, die Fragen so gut ich kann zu beantworten:

  1. ipywidgets ist der Hauptweg, ja. Das meinen die Leute, wenn sie über Notebook-Widgets sprechen.
  2. Im Jupyterlab gibt es ein Problem mit dem allgemeinen JS im Jupyterlab-Repo.
  3. @jupyter-widgets/jupyterlab-manager ist die Widgets für Jupyterlab, ja, aber Sie benötigen den Python-Code in ipywidgets. Weitere Informationen finden Sie unter http://ipywidgets.readthedocs.io/de/stable/user_install.html .
  4. Es stimmt zwar, dass es sich um JS und das andere TS handelt, der TS hat aber auch alle Glocken und Trillerpfeifen. Es ist daher auch komplexer. Der JS ist mehr nackte Knochen und könnte daher besser für das Verständnis der wichtigsten Bits sein.
  5. Ich bin damit einverstanden, dass beide mit einer besseren Dokumentation auskommen könnten! Ich wollte das schon eine Weile machen. Der beste Weg, dies zu erreichen, besteht wahrscheinlich darin, Probleme mit spezifischen Fragen zu den jeweiligen Repositorys zu eröffnen und die Erklärung in README oder ähnlichem zu machen. Auf diese Weise können Sie sicherstellen, dass Ihre Schmerzpunkte angegangen werden.
  6. Angesichts der großen Benutzerbasis von Widgets würde ich es für sicher halten. Während der Bus-Faktor nicht sehr hoch ist, neigen die Leute dazu, bei einem Rückgang der Betreuer nach oben zu treten.
  7. Ja, die Verwendung von Widgets für Jupyterlab ist jedoch sowohl für Entwickler als auch für Benutzer etwas wartungsintensiv.
  8. Was Sie vielleicht studieren möchten, ist Comms ( http://jupyter-notebook.readthedocs.io/de/stable/comms.html ). Dies ist, was Widgets für die Synchronisation verwenden. Dies ist jedoch eine niedrigere Stufe, daher müssen Sie beurteilen, welche für Sie am besten geeignet ist.
5
Vidar

Denken Sie zunächst daran, dass JupyterLab noch nicht stabil ist und die interne API sich immer noch stark ändert. Der größte Teil Ihrer Frustration besteht darin, Informationen über ein Projekt zu finden, das sich jede Woche ändert (sollte sich Anfang 2018 als Referenz stabilisieren).

Dies führt zu einem minimalen Aufwand beim Erstellen von Dokumentationen und Beispielen für Benutzer, da die Dokumente ohnehin eine Woche später falsch sein werden. Ihre Verwirrung und Bewegungsmangel sind also vorerst normal.

Sobald sich das Labor stabilisiert hat und das IPywidget-Team alles portiert, sollten Sie eine Verbesserung feststellen.

3
Matt