[PYTHON] Lorsque je me suis connecté à un serveur Jupyter distant avec VScode, il était distant mais local.

Lorsque je me suis connecté à un serveur Jupyter distant avec VScode, j'ai pu exécuter un fichier local et la sortie du fichier lors de l'exécution du fichier était distante.

introduction

J'étudie généralement les calculs numériques en utilisant Python à l'université. Comme les ressources informatiques du PC de laboratoire sont rares, l'environnement d'exécution est construit sur le PC domestique, et le travail transfère le port local du notebook jupyter démarré sur le PC domestique vers le même port que celui du laboratoire. L'image est

PC de laboratoire (nom d'hôte: local) ↓ [local] ssh -L 8888:localhost:8888 remote PC domestique (nom d'hôte: distant) ↓ [remote] jupyter notebook PC de laboratoire ↓ [local] xgd-open http://localhost:8888/?token=<token>

C'est comme ça. Seuls les fichiers distants sont accessibles de cette manière. Non, au moins je comprends cela. Étant donné que les deux PC sont Windows, la configuration du répertoire de travail de jupyter à démarrer à distance sur Onedrive a facilité la synchronisation des fichiers avec local. L'image est

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

C'est comme ça.

Présentation de VScode

Cet automne, Visual Studio Code a lancé la prise en charge native des notebooks jupyter.

Référence: Il semble que l'extension Python de VS Code supporte nativement Jupyter, j'ai donc essayé de l'utiliser immédiatement. Bien que jupyter notebook ait l'avantage d'un environnement de développement interactif, il ne dispose pas de fonctions auxiliaires fournies avec les éditeurs de texte hautes performances tels qu'Atom, et comme il s'agit d'une application Web, le style d'interface utilisateur doit être décrit en css. Fastidieux. J'ai entendu dire que cette mise à jour de VScode avait également la possibilité de se connecter à un serveur jupyter distant, et cela m'a rappelé cette grosse vague que je n'avais pas d'autre choix que de surfer. Cependant, probablement parce qu'il n'est sorti que depuis quelques mois, il n'y a aucun article qui se concentre sur la fonction de connexion à ce serveur jupyter distant. Quand j'ai cherché, je suis tombé sur une toute nouvelle technologie qui "peut exécuter des fichiers locaux dans un environnement d'exécution à distance". De plus, le comportement n'était pas intuitivement compréhensible, j'ai donc décidé de le partager sous forme d'article.

Environnement d'exécution

À titre d'essai, j'ai utilisé mon propre ordinateur portable au lieu du PC de laboratoire mentionné ci-dessus.

Nom d'hôte: distant; bureau Macho avec des ressources informatiques abondantes win10, python3.6, jupyter

Nom d'hôte: local; ordinateur portable Gari avec une horloge atomique CPU d'environ 1 GHz win10, python3.6, jupyter, VScode

Environnement VScode

C'est sur le net, je vais donc l'omettre. Je viens d'ajouter le corps principal, les add-ons japonais et python.

Expérience fumbling

Laissez le répertoire de travail VScode local être local_dir et le répertoire de travail du serveur jupyter distant remote_dir.

Tout d'abord, lancez votre notebook dans votre environnement local. Tapez ce qui suit dans la palette de commandes VScode pour ouvrir un bloc-notes vide.

Python: Create New Blank Jupyter Notebook

Ensuite, écrivez le code suivant dans la cellule et exécutez-le.

~/local_dir/whereami.ipynb


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

#Out[1]
'local' #Nom d'hôte du PC local

J'ai pu l'exécuter dans mon environnement local. Puis connectez-vous au serveur jupyter distant.

Python: Specify local or remote Jupyter server for connections

Ensuite, une invite apparaîtra, spécifiez l'URL du notebook jupyter distant. Dans mon environnement, comme mentionné ci-dessus, en supposant un ssh séparé

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

n'est-ce pas. Un dossier et des fichiers cachés seront créés dans local_dir.

~/local_dir/.vscode/settings.json


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

L'ouverture d'un notebook dans le répertoire contenant ce fichier de configuration déplacera l'environnement d'exécution vers un emplacement distant.

~/local_dir/whereami.ipynb


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

#Out[1]
'remote' #Nom d'hôte du PC distant

Où se trouve le fichier exécutable réel?

~/local_dir/whereami.ipynb


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

#Out[2]
'<remote_dir>' #répertoire de travail du serveur jupyter

Je pensais ouvrir un fichier local, mais je suis censé ouvrir un fichier dans le répertoire de travail du PC distant. Quand j'ai regardé dans l'invite distante qui a ouvert le notebook jupyter, j'ai vu des preuves de mise en cache dans le journal. En fait, le fichier local nommé Sans titre [0-9] + .ipynb est mis en cache dans le répertoire de travail du serveur jupyter, et il semble que le cache est supprimé lorsque VScode est fermé. Tente de sortir un fichier dans cet état.

~/local_dir/whereami.ipynb


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

Où est la sortie whereami.csv?

~/remote_dir/whereami.csv

était.

Résumé

C'est éloigné, mais ce n'était pas le cas!

référence

J'ai essayé d'exécuter Jupyter Notebook avec Visual Studio Code https://dev.classmethod.jp/server-side/python/visual-studio-code-jupyter-notebook/

Il semble que l'extension Python de VS Code ait un support natif pour Jupyter, j'ai donc essayé de l'utiliser immédiatement. https://qiita.com/simonritchie/items/5d865e72dba47cf8f6c0

Recommended Posts

Lorsque je me suis connecté à un serveur Jupyter distant avec VScode, il était distant mais local.
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
J'obtiens un UnicodeDecodeError en essayant de me connecter à oracle avec python sqlalchemy
Quand j'ai essayé de créer un VPC avec AWS CDK mais que je n'ai pas pu le faire
Je veux lier une variable locale avec lambda
Je veux démarrer un environnement Jupyter avec une seule commande
Je souhaite utiliser un environnement virtuel avec jupyter notebook!
J'ai créé un serveur Web avec Razpai pour regarder des anime
Je voulais créer une présentation intelligente avec Jupyter Notebook + nb present
Une note à laquelle j'étais accro lors de la création d'une table avec SQL Alchemy
Je veux écrire un blog avec Jupyter Notebook
C'est plus récent, mais je voulais essayer le calcul de l'IMC avec python.
Connectez-vous à GNU / Linux avec un bureau distant
J'ai créé un outil pour convertir Jupyter py en ipynb avec VS Code
Exécuter le notebook Jupyter sur un serveur distant
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
Une note à laquelle j'étais accro lors de l'exécution de Python avec Visual Studio Code
Une histoire à laquelle j'étais accro après la communication SFTP avec python
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Créer un serveur local avec une commande sur une seule ligne [Mac]
Connectez-vous à un serveur distant avec SSH
Configurer un serveur local avec le téléchargement Go-File-
Je veux faire un jeu avec Python
Activer Jupyter Notebook avec conda sur un serveur distant
Serveur de jeu avec deux PC
J'obtiens une UnicodeDecodeError lors de l'exécution avec mod_wsgi
Configurer un serveur local avec le téléchargement Go-File-
Comment configurer un serveur de développement local
J'ai essayé de démarrer Jupyter avec toutes les lumières d'Amazon
Je veux écrire dans un fichier avec Python
J'ai essayé de créer un projet en utilisant Python sur Docker avec PyCharm, mais cela a fonctionné avec Docker Compose
[Python] Je souhaite utiliser uniquement l'index lors de la mise en boucle d'une liste avec une instruction for
Je suis resté bloqué en essayant de spécifier un chemin relatif avec relative_to () en python
[Mémorandum] python + vscode + pipenv C'est courant, mais c'était un désordre d'avertissement, donc un mémorandum
J'ai créé un serveur syslog prêt à l'emploi avec Play with Docker
Je veux escalader une montagne avec l'apprentissage par renforcement
Je veux travailler avec un robot en python.
Je veux diviser une chaîne de caractères avec hiragana
Je souhaite créer manuellement une légende avec matplotlib
[Note] Je ne peux pas me connecter avec wget, mais je peux me connecter avec curl
[Python] J'ai essayé d'exécuter un serveur local en utilisant flask
Répertoire actuel lors de la création d'un nouveau avec Jupyter
Ssh dans un environnement virtuel avec vscode Remote Development
Je veux faire fonctionner un ordinateur quantique avec Python
J'ai introduit le noir dans vscode, mais il n'est pas automatiquement formaté
J'ai été surpris de recevoir une belle critique lorsque j'ai écrit Python à CheckIO et son explication
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
Comment se connecter à Cloud SQL PostgreSQL sur Google Cloud Platform à partir d'un environnement local avec Java
Lorsque j'essaye de me connecter à MySQL avec mysql-connector-python, je ne peux pas me connecter avec l'erreur "Erreur de connexion SSL: SSL_CTX_set_tmp_dh a échoué"
[Solution] Lorsque j'essaye de me connecter à CloudSQL avec GAE, j'obtiens une ImportError uniquement lorsque dev_appserver.
Lors de la génération d'un grand nombre de graphiques avec matplotlib, je ne souhaite pas afficher le graphique à l'écran (environnement jupyter)
Serveur local avec python
Une histoire qui a trébuché lorsque j'ai créé un bot de chat avec Transformer
Je souhaite supprimer l'avertissement d'importation non résolue de Python avec vsCode
J'ai eu une erreur de valeur lors de l'utilisation de JUMAN ++ avec PyKNP
écran et écran partagé avec connexion python et ssh au serveur distant
J'ai essayé de démarrer le serveur de Django avec VScode au lieu de Pycharm