Code source de ensae_teaching_cs.faq.faq_jupyter

# -*- coding: utf-8 -*-
"""
Quelques problèmes récurrents avec :epkg:`Jupyter`.



:githublink:`%|py|7`
"""

from pyquickhelper.loghelper import fLOG
from .faq_jupyter_helper import nb_open


[docs]def notebook_path(): """ .. faqref:: :tag: jupyter :title: Récupérer le fichier du notebook depuis le notebook Voir `How to I get the current Jupyter Notebook name <http://stackoverflow.com/questions/12544056/how-to-i-get-the-current-ipython-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 :githublink:`%|py|33` """ pass
[docs]def jupyter_convert_notebooks(): """ .. exref:: :title: Convertir le notebook en cours au format HTML :tag: Technique .. index:: conversion, html, rst C'est l'objet du notebook :ref:`notebookconvertrst`. .. faqref:: :tag: jupyter :title: Comment convertir le notebook en cours au format HTML ? Voir notebook :ref:`notebookconvertrst`. .. faqref:: :tag: jupyter :title: Comment ajouter un lien vers un fichier local pour le télécharger ? Voir notebook :ref:`notebookconvertrst`. :githublink:`%|py|58` """ pass
[docs]def jupyter_get_variable(name, magic_command_instance): """ Retrieves the value of a local variable in a notebook. :param name: variable name :param magic_command_instance: instance of `Magics <http://ipython.readthedocs.io/en/stable/api/ generated/IPython.core.magic.html#IPython.core.magic.Magics>`_, see `Defining your own magics <http://ipython.readthedocs.io/en/stable/config/custommagics.html?defining-custom-magics>`_ :return: value The function raises an exception if the context does not exists or if the variable name does not value .. faqref:: :tag: jupyter :title: 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 #... :githublink:`%|py|95` """ if magic_command_instance.shell is None: raise Exception( "no context, you probably execute this function outside a notebook") if name not in magic_command_instance.shell.user_ns: raise KeyError("variable {0} not found".format(name)) return magic_command_instance.shell.user_ns[name]
[docs]def jupyter_open_notebook(filename, profile='default', fLOG=fLOG): """ Calls :func:`nb_open <ensae_teaching_cs.faq.faq_jupyter_helper.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 filename: notebook :param profile: profile to use :param fLOG: logging function :return: a running server or None if not found .. faqref:: :tag: jupyter :title: Lancer le serveur de notebooks :lid: i-launch_notebook-server On suppose que le module :epkg:`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 <http://www.xavierdupre.fr/blog/2014-02-24_nojs.html>`_, `Open the notebook with a different browser <http://www.xavierdupre.fr/blog/2015-08-24_nojs.html>`_ Il est possible de créer un fichier `.bat <https://fr.wikipedia.org/wiki/.bat>`_ pour automatiser la ligne de commande et l'ajouter en tant qu'icône sur le bureau. #. Utiliser la fonction :func:`jupyter_open_notebook <ensae_teaching_cs.faq.faq_jupyter.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. .. faqref:: :tag: jupyter :title: Le notebook ne répond plus On utilise les notebooks via un `navigateur web <https://fr.wikipedia.org/wiki/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. :githublink:`%|py|156` """ return nb_open(filename, profile, fLOG)