Herstellen einer Verbindung mit einer Remote-IPython-Instanz
Ich würde gerne eine IPython-Instanz auf einem Rechner und verbinden (über LAN) von einem anderen Prozess (zum ausführen von python-Befehlen). Ich verstehe, dass es möglich ist mit zmq : http://ipython.org/ipython-doc/dev/development/ipythonzmq.html .
Aber ich kann nicht finden die Dokumentation auf, wie es geht und ob es überhaupt möglich noch.
Jede mögliche Hilfe würde geschätzt!
BEARBEITEN
Ich würde gerne in der Lage, eine Verbindung zu IPython kernel-Instanz aus und senden Sie es python-Befehle. Dies sollte allerdings nicht getan werden, über ein grafisches tool (qtconsole) , aber ich möchte in der Lage sein, um eine Verbindung mit diesem kernel-Instanz in einem anderen python-script...
z.B.
external.py
somehow_connect_to_ipython_kernel_instance
instance.run_command("a=6")
InformationsquelleAutor der Frage Ohad | 2012-04-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, um code auszuführen, in der ein kernel von einem anderen Python-Programm, ist der einfachste Weg zum anschließen eines BlockingKernelManager. Das beste Beispiel ist im Moment Paul Iwanow vim-ipython client, oder IPython eigenen terminal-client.
Gesagt:
IPYTHONDIR/profile_<name>/security/kernel-<id>.json
die enthalten die notwendigen Informationen für die verschiedenen clients und ausführen von code.*
Einem Beispiel arbeiten:
In einer Schale, Mach
ipython kernel
(oderipython qtconsole
wenn Sie freigeben möchten, einen kernel mit einem bereits Laufenden GUI):Schrieb die 'kernel-6759.json' - Datei
Dann können Sie das Python-snippet zu verbinden KernelManager und ausführen von code:
Die Ausgabe eines run:
sehen die Nachricht spec weitere Informationen zum interpretieren der Antworten. Falls relevant, stdout/err und Anzeige der Daten kommen über
km.iopub_channel
und Sie können sich mit der msg_id zurückgegebenshell.execute()
zu verbinden output mit einem gegebenen Ausführung.PS: ich entschuldige mich für die Qualität der Dokumentation zu diesen neuen features. Wir haben eine Menge zu schreiben, zu tun.
InformationsquelleAutor der Antwort minrk
Wenn Sie nur wollen, zu verbinden interaktivkönnen Sie mit SSH-forwarding. Ich finde nicht das dokumentiert irgendwo auf Stack Overflow noch, doch diese Frage am nächsten kommt. Diese Antwort wurde getestet auf Ipython 0.13. Ich habe die Informationen aus in diesem blog-post.
Laufen
ipython kernel
auf dem remote-Rechner:Blick auf die
kernel-25333.json
Datei:Einrichten, port-forwarding auf die lokale Maschine:
Kopieren Sie die
kernel-25333.json
- Datei auf der lokalen Maschine:Ausführen von ipython auf der lokalen Maschine mithilfe des neuen Kernels:
InformationsquelleAutor der Antwort gerrit
Update zu minrk Antwort nach dem split zu jupyter. Mit
jupyter_client (4.1.1)
der einfachste code ist eher sowas wie:
Beachten Sie, dass:
Derzeit ist es ziemlich schwierig zu finden, eine aktualisierte Dokumentation; noch nichts auf http://jupyter-client.readthedocs.org/en/latest/ für BlockingKernelClient. Einige code in https://github.com/jupyter/jupyter_kernel_test. Jeder link willkommen.
InformationsquelleAutor der Antwort S. Bougnoux
Wenn Sie Anaconda, in OS X wird der JSON-Datei gespeichert
In Windows:
InformationsquelleAutor der Antwort 32768
Den oben genannten Antworten sind ein bisschen alt. Die Lösung für die neueste version von
ipython
ist viel einfacher, aber ist nicht gut dokumentiert an einem Ort. Also ich dachte, ich würde dokumentieren es hier.Lösung zum verbinden von jedem Betriebssystem auf ein ipython kernel auf
Windows
Wenn entweder der client oder der server ist ein
linux
oder ein anderes Betriebssystem, ändern Sie einfach die Position derkernel-1234.json
entsprechend, basierend auf Wo ist das kernel-1234.json befindet sich in Jupyter unter Windows?ipykernel
installiert ist mitpip install ipykernel
ipykernel
mitipython kernel -f kernel-1234.json
kernel-1234.json
- Datei auf IhremWindows
Maschine. Die Datei wird wahrscheinlich haben eine unterschiedliche Anzahl, nicht1234
- und wahrscheinlich werden sich in 'C:\Users\me\AppData\Roaming\jupyter\runtime\kernel-1234.json': https://stackoverflow.com/a/48332006/4752883pip install jupyter-console
oderpip install qtconsole
https://jupyter-console.readthedocs.io/en/latest/ipconfig
um herauszufinden, die ip-Adresse Ihres Windows-Servers. (Unter Linux tunifconfig
an der shell-Eingabeaufforderung). In derkernel-1234.json
- Datei, ändern Sie die ip-Adresse von127.0.0.1
um die ip-Adresse Ihres Servers. Wenn Sie eine Verbindung von einem anderenWindows
server, dann kopieren Sie denkernel-1234.json
- Datei auf Ihrem lokalen computer, und notieren Sie sich den Pfad.kernel-1234.json
und starten Jupyter Konsole Verwendungjupyter console --existing kernel-1234.json
InformationsquelleAutor der Antwort alpha_989