[PYTHON] Als ich mit VScode eine Verbindung zu einem entfernten Jupyter-Server herstellte, war dieser entfernt, aber lokal.

Als ich mit VScode eine Verbindung zu einem entfernten Jupyter-Server herstellte, konnte ich eine lokale Datei ausführen, und die Dateiausgabe während der Dateiausführung war remote.

Einführung

Normalerweise studiere ich numerische Berechnungen mit Python an der Universität. Da die Rechenressourcen des Labor-PCs knapp sind, wird die Ausführungsumgebung auf dem Heim-PC aufgebaut, und die Arbeit leitet den lokalen Port des auf dem Heim-PC gestarteten Jupyter-Notebooks an denselben Port des Labor-PCs weiter. Das Bild ist

Labor-PC (Hostname: lokal) ↓ [local] ssh -L 8888:localhost:8888 remote Heim-PC (Hostname: Remote) ↓ [remote] jupyter notebook Labor-PC ↓ [local] xgd-open http://localhost:8888/?token=<token>

Es ist so. Auf diese Weise kann nur auf entfernte Dateien zugegriffen werden. Nein, zumindest verstehe ich das. Da beide PCs Windows sind, war es durch das Festlegen des Arbeitsverzeichnisses von jupyter, das per Remote auf Onedrive gestartet werden soll, einfach, Dateien mit lokal zu synchronisieren. Das Bild ist

C:/users/<remote_user>/onedrive == C:/users/<local_user>/onedrive

Es ist so.

Einführung in VScode

In diesem Herbst hat Visual Studio Code die native Unterstützung für Jupyter-Notebooks gestartet.

Referenz: Es scheint, dass die Python-Erweiterung von VS Code Jupyter nativ unterstützt, daher habe ich versucht, sie sofort zu verwenden. Das Jupyter-Notebook bietet zwar den Vorteil einer interaktiven Entwicklungsumgebung, verfügt jedoch nicht über Zusatzfunktionen, die mit leistungsstarken Texteditoren wie Atom geliefert werden. Da es sich um eine Webanwendung handelt, muss der UI-Stil in CSS beschrieben werden. Langweilig. Ich habe gehört, dass dieses Update von VScode auch die Möglichkeit bietet, eine Verbindung zu einem Remote-Jupyter-Server herzustellen, und ich wurde an diese große Welle erinnert, dass ich keine andere Wahl hatte, als zu fahren. Wahrscheinlich, weil es erst seit einigen Monaten veröffentlicht wird, gibt es jedoch keine Artikel, die sich mit der Funktion der Verbindung zu diesem Remote-Jupyter-Server befassen. Als ich danach tastete, stieß ich auf eine brandneue Technologie, die "lokale Dateien in einer Remote-Ausführungsumgebung ausführen kann". Außerdem war das Verhalten nicht intuitiv verständlich, so dass ich mich entschied, es als Artikel zu teilen.

Ausführungsumgebung

Als Test habe ich meinen eigenen Notebook-PC anstelle des oben genannten Labor-PCs verwendet.

Hostname: Remote; Macho-Desktop mit reichlich vorhandenen Computerressourcen win10, python3.6, jupyter

Hostname: lokal; Gari-Laptop mit einem CPU-Atomtakt von ca. 1 GHz win10, python3.6, jupyter, VScode

VScode-Umgebung

Es ist im Netz, also werde ich es weglassen. Ich habe gerade den Hauptteil, Japanisch und Python-Add-Ons hinzugefügt.

Fummelexperiment

Das lokale VScode-Arbeitsverzeichnis sei local_dir und das Remote-Jupyter-Server-Arbeitsverzeichnis remote_dir.

Starten Sie zunächst Ihr Notebook in Ihrer lokalen Umgebung. Geben Sie Folgendes in die VScode-Befehlspalette ein, um ein leeres Notizbuch zu öffnen.

Python: Create New Blank Jupyter Notebook

Schreiben Sie dann den folgenden Code in die Zelle und führen Sie ihn aus.

~/local_dir/whereami.ipynb


#ln[1]
import socket
print(socket.gethostname())

#Out[1]
'local' #Lokaler PC-Hostname

Ich konnte es in meiner lokalen Umgebung ausführen. Stellen Sie dann eine Verbindung zum Remote-Jupyter-Server her.

Python: Specify local or remote Jupyter server for connections

Daraufhin wird eine Eingabeaufforderung angezeigt. Geben Sie die URL des Remote-Jupyter-Notizbuchs an. In meiner Umgebung, wie oben erwähnt, unter der Annahme eines separaten ssh

http://localhost:8888/?token=<token>

nicht wahr. Ein versteckter Ordner und Dateien werden in local_dir erstellt.

~/local_dir/.vscode/settings.json


{
    "python.dataScience.jupyterServerURI": http://localhost:8888/?token=<token>
}

Durch Öffnen eines Notizbuchs in dem Verzeichnis, das diese Konfigurationsdatei enthält, wird die Ausführungsumgebung an einen Remotestandort verschoben.

~/local_dir/whereami.ipynb


#ln[1]
import socket
print(socket.gethostname())

#Out[1]
'remote' #Hostname des Remote-PCs

Wo ist die eigentliche ausführbare Datei?

~/local_dir/whereami.ipynb


#ln[2]
import os
print(os.path.abspath(""))

#Out[2]
'<remote_dir>' #Arbeitsverzeichnis des Jupyter-Servers

Ich dachte, ich würde eine lokale Datei öffnen, aber ich sollte eine Datei im Arbeitsverzeichnis des Remote-PCs öffnen. Als ich in die Remote-Eingabeaufforderung schaute, die das Jupyter-Notizbuch öffnete, sah ich Hinweise auf ein gewisses Caching im Protokoll. Es scheint, dass die lokale Datei tatsächlich im Arbeitsverzeichnis des Jupyter-Servers mit dem Namen Untitled [0-9] + .ipynb zwischengespeichert ist und der Cache gelöscht wird, wenn VScode geschlossen wird. Versucht, eine Datei in diesem Zustand auszugeben.

~/local_dir/whereami.ipynb


#ln[3]
import numpy as np
a = np.array([1,2,3])
np.savetxt("whereami.csv", a)

Wo wird whereeami.csv ausgegeben?

~/remote_dir/whereami.csv

war.

Zusammenfassung

Es ist abgelegen, aber es war nicht!

Referenz

Ich habe versucht, Jupyter Notebook mit Visual Studio Code auszuführen https://dev.classmethod.jp/server-side/python/visual-studio-code-jupyter-notebook/

Es scheint, dass die Python-Erweiterung von VS Code native Unterstützung für Jupyter bietet, daher habe ich sofort versucht, sie zu verwenden. https://qiita.com/simonritchie/items/5d865e72dba47cf8f6c0

Recommended Posts

Als ich mit VScode eine Verbindung zu einem entfernten Jupyter-Server herstellte, war dieser entfernt, aber lokal.
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
Ich erhalte einen UnicodeDecodeError, wenn ich versuche, mit Python sqlalchemy eine Verbindung zu Oracle herzustellen
Als ich versuchte, eine VPC mit AWS CDK zu erstellen, konnte ich es aber nicht schaffen
Ich möchte eine lokale Variable mit Lambda binden
Ich möchte eine Jupyter-Umgebung mit einem Befehl starten
Ich möchte eine virtuelle Umgebung mit Jupyter Notebook verwenden!
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Ich wollte eine intelligente Präsentation mit Jupyter Notebook + nb present erstellen
Ein Hinweis, dem ich beim Erstellen einer Tabelle mit SQL Alchemy verfallen war
Ich möchte einen Blog mit Jupyter Notebook schreiben
Es ist neuer, aber ich wollte die BMI-Berechnung mit Python ausprobieren.
Stellen Sie über einen Remotedesktop eine Verbindung zu GNU / Linux her
Ich habe ein Tool erstellt, um Jupyter py mit VS Code in ipynb zu konvertieren
Führen Sie Jupyter Notebook auf einem Remote-Server aus
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
Erstellen Sie einen lokalen Server mit einem einzeiligen Befehl [Mac]
Melden Sie sich mit SSH bei einem Remote-Server an
Richten Sie einen lokalen Server mit Go-File-Upload ein.
Ich möchte ein Spiel mit Python machen
Aktivieren Sie Jupyter Notebook mit conda auf dem Remote-Server
Spielen Sie den Server mit zwei PCs
Ich erhalte einen UnicodeDecodeError, wenn ich mit mod_wsgi laufe
Richten Sie einen lokalen Server mit Go-File-Download ein.
So richten Sie einen lokalen Entwicklungsserver ein
Ich habe versucht, Jupyter mit allen Amazon-Lichtern zu starten
Ich möchte mit Python in eine Datei schreiben
Ich habe versucht, ein Projekt mit Python on Docker mit PyCharm zu erstellen, aber es hat mit Docker Compose funktioniert
[Python] Ich möchte nur den Index verwenden, wenn ich eine Liste mit einer for-Anweisung schleife
Ich blieb stecken, als ich versuchte, einen relativen Pfad mit relative_to () in Python anzugeben
[Memorandum] python + vscode + pipenv Es ist üblich, aber es war ein Durcheinander mit Warnungen, also ein Memorandum
Ich habe mit Play with Docker einen gebrauchsfertigen Syslog-Server erstellt
Ich möchte mit verstärkendem Lernen einen Berg besteigen
Ich möchte mit einem Roboter in Python arbeiten.
Ich möchte eine Zeichenkette mit Hiragana teilen
Ich möchte manuell eine Legende mit matplotlib erstellen
[Hinweis] Ich kann mich nicht mit wget verbinden, aber ich kann mich mit curl verbinden
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Aktuelles Verzeichnis beim Erstellen eines neuen Verzeichnisses mit Jupyter
SSH in eine virtuelle Umgebung mit vscode Remote Development
Ich möchte einen Quantencomputer mit Python betreiben
Ich habe Schwarz in vscode eingeführt, aber es wird nicht automatisch formatiert
Ich war überrascht, eine nette Rezension zu erhalten, als ich Python an CheckIO und seine Erklärung schrieb
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Herstellen einer Verbindung zu Cloud SQL PostgreSQL auf der Google Cloud Platform aus einer lokalen Umgebung mit Java
Wenn ich versuche, mit mysql-connector-python eine Verbindung zu MySQL herzustellen, kann ich keine Verbindung mit dem Fehler "SSL-Verbindungsfehler: SSL_CTX_set_tmp_dh fehlgeschlagen" herstellen.
[Lösung] Wenn ich versuche, mit GAE eine Verbindung zu CloudSQL herzustellen, wird nur bei dev_appserver ein ImportError angezeigt.
Wenn ich mit matplotlib eine große Anzahl von Diagrammen generiere, möchte ich das Diagramm nicht auf dem Bildschirm anzeigen (Jupyter-Umgebung).
Lokaler Server mit Python
Eine Geschichte, die stolperte, als ich mit Transformer einen Chat-Chat-Bot erstellte
Ich möchte Pythons ungelöste Importwarnung mit vsCode entfernen
Bei Verwendung von JUMAN ++ mit PyKNP ist ein Wertefehler aufgetreten
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
Ich habe versucht, Djangos Server mit VScode anstelle von Pycharm zu starten