J'exécute un script de notebook jupyter en utilisant le client python de Papermill. Lors de l'exécution, je souhaite spécifier le noyau. Cependant, le script fonctionnait dans le même noyau que mon shell python actif (à travers lequel j'ai fait l'appel API à papermill afin d'exécuter le script du notebook).
J'ai essayé de chercher dans la documentation ( https://papermill.readthedocs.io/en/latest/usage-execute.html#execute-via-the-python-api ) mais en vain.
import papermill as pm pm.execute_notebook( 'dfnjofnei.ipynb', 'dfnjofnei_output.ipynb' )
3 Réponses :
Utilisez pipenv pour gérer les environnements virtuels et créer des noyaux autour des outils que vous utilisez.
Assurez-vous d'abord que pipenv est installé. Ensuite, vous pouvez facilement créer un nouveau noyau pipenv et ipython avec
# create a python 3 virtualenv and add the kernel to ipython $ mkdir MyProject $ cd MyProject $ pipenv_jupyter.sh -3 # remove an unwanted kernel $ pipenv_jupyter.sh -c
Une fois que vous avez créé ipykernel, vous devez l'installer:
$ pipenv install module_name
Ajoutez tous les modules pip supplémentaires que vous souhaitez avoir au venv:
$ pipenv run python -m ipykernel install --user --name=My_Project_Name"
Lancez Jupyter Notebook et choisissez votre noyau dans le menu déroulant.
Vous pouvez maintenant ajouter des modules à volonté et ils seront disponibles sans redémarrer le noyau.
Pour simplifier ce processus, j'ai créé un petit outil qui crée automatiquement l'environnement pipenv à partir de la ligne de commande. Cela permet également de supprimer les noyaux inutilisés. Vous pouvez le trouver ici avec un script pour supprimer tout notebook %magic
et convertir ipynotebooks en scripts python exécutables.
Usage:
$ pipenv [--two|--three] install ipykernel
Cela ne répond pas à la question initiale ... l'OP est évidemment conscient des environnements virtuels mais aimerait savoir comment les utiliser via Papermill.
Je ne sais pas si c'est trop tard maintenant, mais vous pouvez vérifier ceci:
papermill {input_path} {output_path} -k {kernel_name}
La documentation n'est pas exhaustive. Vous pouvez trouver d'autres arguments configurables ici: https://github.com/nteract/papermill/blob/main/papermill/execute.py
Pour spécifier le noyau lors de l'appel de l'API, kernel_name
simplement kernel_name
, par exemple:
import papermill as pm pm.execute_notebook( 'input.ipynb', kernel_name='python3' )
(J'ai essayé ça et ça a marché)