module faq.faq_jupyter#

Short summary#

module ensae_teaching_cs.faq.faq_jupyter

Quelques problèmes récurrents avec Jupyter.

source on GitHub

Functions#

function

truncated documentation

jupyter_convert_notebooks

jupyter_get_variable

Retrieves the value of a local variable in a notebook.

jupyter_open_notebook

Calls nb_open(), open a notebook with an existing server, if no server can be found, it starts a new one (and …

notebook_path

Documentation#

Quelques problèmes récurrents avec Jupyter.

source on GitHub

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.

source on GitHub

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:
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
        #...

source on GitHub

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 :

  1. 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.

  2. Utiliser la fonction jupyter_open_notebook

    from ensae_teaching_cs.faq import jupyter_open_notebook
    nbfile = "notebook.ipynb"
    jupyter_open_notebook(nbfile)
    
  3. 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.

source on GitHub

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

source on GitHub