2017-12-15 2 views
4

Ich möchte eine interaktive JupyterLab Notebook-Anwendung erstellen, und ich muss eine Reihe von benutzerdefinierten Widgets erstellen. Also begann ich, mich mit dieser Angelegenheit zu befassen, und je mehr ich aussehe, desto verwirrter werde ich. Um die Dinge einfach zu machen, werde ich eine Reihe von einfachen Fragen stellen:Wirklich verwirrt mit Jupyter Notebook, Lab, Erweiterungen und ipywidgets

  1. Einer der häufigsten Wege zur Verwendung von Widgets auf Jupyter Notebooks ist die Verwendung der ipywidgets-Bibliothek. Recht?
  2. Im Gegensatz zum klassischen Notebook kann das Notebook von JupyterLab JavaScript nicht direkt rendern. Daher können die Tutorials zur benutzerdefinierten Widget-Erstellung in den ipywidgets-Dokumenten nicht auf JupyterLab ausgeführt werden. Recht?
  3. Wenn man JavaScript auf dem Notebook von JupyterLab laufen lassen will, muss er oder sie es durch eine Erweiterung machen. Im Falle von ipywidgets muss man @ jupyter-widgets/jupyterlab-manager installieren. Recht?
  4. Wenn Sie ein benutzerdefiniertes Widget mit der ipywidgets-Bibliothek schreiben möchten, gibt es zwei GitHub-Projekte, die Sie als Ausgangspunkt verwenden könnten: widget-cookiecutter und widget-ts-cookiecutter. Nach meinem Verständnis basiert das erstere auf JavaScript und das zweite auf TypeScript. Auch scheint der erste für einige Typen inaktiv zu sein, während der zweite aktiver ist. Plant das JupyterWidgets-Team, sich auf TypeScript zu konzentrieren? Welchen sollte ich folgen?
  5. Die Cookiecutter-Projekte haben nicht wirklich eine Dokumentation. Ich bin wirklich verwirrt und habe Mühe, ihren Code zu verstehen. Klar, ich kann sie kopieren und einfügen und herumspielen, bis ich herausgefunden habe, wie das Ganze funktioniert und was die "Haken" oder "Einstiegspunkte" im Code sind, aber ich würde es sehr schätzen, wenn mir jemand zusätzliche Hinweise geben könnte .
  6. Sind die JupyterWidgets ein "offizielles" Projekt des Jupyter-Projekts? Angesichts der sehr geringen Anzahl von Mitgliedern in dem Projekt frage ich mich, wie sicher es ist, meine Arbeit auf ipywidgets zu gründen. Bedenken Sie, dass das Projekt "DeclarativeWidgets" vor langer Zeit aufgegeben wurde.
  7. Gibt es andere Bibliotheken, die mehr Widgets implementieren als die in ipywidgets gefundenen und auch auf JupyterLab laufen?
  8. Ich möchte eine Webanwendung für die serverseitige Datenverarbeitung erstellen. Mein anfängliches Ziel war es, eine App/einen Dienst zu erstellen, der vom Benutzer keine Kodierung 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 stellte ich jedoch fest, dass es Fälle gibt, in denen der Benutzer 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 wäre und ob es zum Beispiel möglich wäre, eine normale Angular/Python-Schriftart/ein typisches Backend zu erstellen und diese dann in eine JupyterLab-Erweiterung einzufügen, die einen Mechanismus für den Zugriff auf die Daten bereitstellt App/Service und bringen Sie es zur weiteren Verarbeitung zum Notebook.

Vielen Dank im Voraus

Antwort

3

Im Allgemeinen sollte stackoverflow Frage versuchen, nur eine Frage zu der Zeit zu stellen.Davon abgesehen werde ich versuchen, die Fragen so gut wie möglich zu beantworten:

  1. ipywidgets ist der Hauptweg, ja. Es ist, was Leute meinen, wenn sie über Notizbuchwidgets sprechen.
  2. Es gibt ein Problem, das allgemeines JS in jupyterlab auf dem jupyterlab Repo verfolgt.
  3. @jupyter-widgets/jupyterlab-manager ist die Widgets für jupyterlab, ja, aber Sie werden weiterhin den Python-Code in ipywidgets benötigen. Details finden Sie unter http://ipywidgets.readthedocs.io/en/stable/user_install.html.
  4. Während es wahr ist, dass man JS und der andere TS ist, hat die TS man auch alle Schnickschnack. Es ist daher auch komplexer. Die JS-Version ist einfacher und könnte daher besser für das Verständnis der wichtigsten Bits sein.
  5. Ich stimme zu, dass beide mit besserer Dokumentation tun können! Ich wollte das schon eine Weile machen. Der beste Weg, dies zu erreichen, ist wahrscheinlich, Probleme mit spezifischen Fragen zu den jeweiligen Repositories zu öffnen und die Erklärung in der README oder ähnlichem zu finden. Auf diese Weise können Sie sicherstellen, dass Ihre Schmerzpunkte angesprochen werden.
  6. Angesichts der großen Benutzerbasis von Widgets würde ich es als sicher betrachten. Während der Bus-Faktor nicht sehr hoch ist, tendieren die Leute dazu, zu steigen, wenn die Betreuer abfallen.
  7. Ja, aber die Verwendung von Widgets für jupyterlab ist immer noch etwas wartungsintensiv für Entwickler und Benutzer.
  8. Was Sie vielleicht studieren möchten, ist Comms (http://jupyter-notebook.readthedocs.io/en/stable/comms.html), was Widgets unter der Haube für seine Synchronisation verwenden. Dies ist jedoch ein niedrigeres Niveau, so dass Sie beurteilen müssen, welches für Sie am besten geeignet ist.
1

Zunächst einmal daran erinnern, dass JupyterLab noch nicht stabil ist und die interne API ändern sich immer noch ziemlich viel. 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ührte zu minimalen Aufwand Dokumentation und Beispiel für die Benutzer zu schreiben, wie auch immer die Dokumente eine Woche später falsch sein werden. Ihre Verwirrung und Ihr Mangel an Aktivität sind im Moment normal.

Sobald sich das Labor stabilisiert hat und das IPywidget-Team mit der Portierung beginnt, sollten Sie eine Verbesserung sehen.