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.
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.
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.
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
Es ist im Netz, also werde ich es weglassen. Ich habe gerade den Hauptteil, Japanisch und Python-Add-Ons hinzugefügt.
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.
Es ist abgelegen, aber es war nicht!
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