module faq.faq_jupyter
#
Short summary#
module ensae_teaching_cs.faq.faq_jupyter
Quelques problèmes récurrents avec Jupyter.
Functions#
function |
truncated documentation |
---|---|
Retrieves the value of a local variable in a notebook. |
|
Calls |
|
Documentation#
Quelques problèmes récurrents avec Jupyter.
- ensae_teaching_cs.faq.faq_jupyter.jupyter_convert_notebooks()#
Convertir le notebook en cours au format HTML
C’est l’objet du notebook 2A.soft - Convert a notebook into a document.
Comment convertir le notebook en cours au format HTML ?
Voir notebook 2A.soft - Convert a notebook into a document.
Comment ajouter un lien vers un fichier local pour le télécharger ?
Voir notebook 2A.soft - Convert a notebook into a document.
- ensae_teaching_cs.faq.faq_jupyter.jupyter_get_variable(name, magic_command_instance)#
Retrieves the value of a local variable in a notebook.
- Paramètres:
name – variable name
magic_command_instance – instance of Magics, see Defining your own magics
- Renvoie:
value
The function raises an exception if the context does not exists or if the variable name does not value
Accéder ou modifier une variable du notebook depuis une commande magique
Lorsqu’on écrit un notebook, toutes les variables qu’on crée sont en quelque sorte globales puisqu’on peut y accéder depuis chaque cellule mais leur périmètre est limité au notebook. Lorsqu’on crée un commande magique, il est possible d’accéder à ce contexte local via le membre
self.shell.user_ns
. De cette façon, on peut accéder au contenu d’une variable, le modifier ou en ajouter une.class CustomMagics(Magics): @line_magic def custom_cmd(self, line): context = self.shell.user_ns #...
- ensae_teaching_cs.faq.faq_jupyter.jupyter_open_notebook(filename, profile='default', fLOG=<function fLOG>)#
Calls
nb_open
, open a notebook with an existing server, if no server can be found, it starts a new one (and the function runs until the server is closed)- Paramètres:
filename – notebook
profile – profile to use
fLOG – logging function
- Renvoie:
a running server or None if not found
Lancer le serveur de notebooks
On suppose que le module Jupyter a été bien installé. Depuis août 2015, IPython est devenu Jupyter qui n’est pas plus automatiquement associé à Python mais propose des notebooks pour de nombreux langages. Il faut installer le module jupyter (
pip install jupyter
). Plusieurs options :Utiliser la ligne de commande usuelle :
jupyter-notebook
. Ce script (ou programme jupyter-notebook.exe sous Windows est inclus dans le répertoire Scripts du répertoire d’installation. Voir également Travailler avec IPython notebook, Open the notebook with a different browser Il est possible de créer un fichier .bat pour automatiser la ligne de commande et l’ajouter en tant qu’icône sur le bureau.Utiliser la fonction
jupyter_open_notebook
from ensae_teaching_cs.faq import jupyter_open_notebook nbfile = "notebook.ipynb" jupyter_open_notebook(nbfile)
Utiliser le raccourci proposé par la distribution choisi pour installer Python.
Le notebook ne répond plus
On utilise les notebooks via un navigateur web mais ce n’est pas lui qui exécute le code Python, c’est un serveur. Ce serveur tourne soit une machine distante, soit une machine locale. Il s’agit d’une fenêtre terminale où l’on peut voir des informations s’afficher à chaque qu’on ouvre, qu’on ferme, qu’on enregistre un notebook. Si cette fenêtre est fermée, il n’existe plus de serveur de notebook qui puisse exécuter le code inclus dans le notebook. Il ne se passe plus rien, les modifications sont perdues. Il faut redémarrer le serveur, qu’il soit distant ou local.
- ensae_teaching_cs.faq.faq_jupyter.notebook_path()#
Récupérer le fichier du notebook depuis le notebook
Voir How to I get the current Jupyter Notebook name Il suffit d’insérer la cellule suivante dans le notebook
%%javascript var kernel = IPython.notebook.kernel; var body = document.body, attribs = body.attributes; var command = "theNotebook = os.path.join(" + "r'"+attribs['data-project'].value+"'," + "r'"+attribs['data-notebook-path'].value+"'," + "r'"+attribs['data-notebook-name'].value+"')"; kernel.execute(command);
On peut vérifier que cela fonctionne
theNotebook