Pip & Venv
Avec cette méthode, on peut se contenter du python3
du système d’exploitation. Dans tous les cas, ne jamais installer les packages dans l’environnement global, toujours dans des environnements virtuels isolés du reste du système d’exploitation.
- Créer un nouveau repo github
- Le cloner avec
git clone https://...
- Créer les sous-dossiers suivants :
data
,src
,notebooks
- Créer un environnement virtuel
.venv
, à la racine du dossier. - Activer l’environnement virtuel, installer les packages nécessaires.
- Créer un fichier
requirements.txt
avecpip freeze > requirements.txt
- Créer un fichier
.gitignore
, ignorerdata/
et.venv/
. - add, commit & push
Conda (recommandé)
- Installer Miniconda (voir Quick command line install, c’est l’affaire de 4 ou 5 commandes).
- Créer un environnement virtuel avec
conda create
Hors connexion, la commande conda create
va échouer, à moins d’utiliser la commande --offline
. En effet, même si on ne spécifie pas de paquet à installer, conda va “consulter” les channels par défaut.
Par défaut, les environnement virtuels conda sont centralisés dans le dossier ~/miniconda3
. C’est bien ainsi.
- Activer cet environnement avec
conda activate
- Installer les packages nécessaires, souvent avec le chanel conda-forge :
conda install -c conda-forge XXX
Il y a deux approches possibles pour la création d’un environnement conda et l’installation des paquets :
- installer les paquets directement avec
conda create
- avec
conda create
,conda activate
,conda install
.
Les deux approches sont valides. Dans un cas : conda create -n sklearn-env -c conda-forge scikit-learn
, dans l’autre conda create -n sklearn-env conda activate sklearn-env conda install -c conda-forge scikit-learn
. Petite préférence pour la première approche pour des environnements simples avec quelques packages définis à l’avance (cela permet de gérer dès le départ les conflits de dépendance). Préférence évidente pour la deuxième dans le cas où les paquets sont ajoutés de manière incrémentale.
Jupyter
Installer Jupyter notebook ou Jupyter Lab dans un environnement à part (jup par exemple), créé soit avec conda, soit avec venv.
Pour ajouter utiliser un environnement virtuel conda (par exemple sklearn-env) comme kernel jupyter :
conda activate sklearn-env
conda install -c conda-forge ipykernel
python -m ipykernel install --user --name=sklearn-env --display-name "Python (sklearn-env)"
Lancer jupyter notebook et sélectionner le kernel correspondant.
Les kernels jupyter sont stockés dans ~/.locale/share/jupyter/kernels
sous la forme d’un fichier .json
. Si on supprime un environnement virtuel et qu’on ne veut plus qu’il apparaisse dans la page de sélection des kernels (pour Jupyterlab) ou le menu déroulant (pour Jupyter notebook), c’est ce dossier qu’il faut supprimer.
Conda & pip
- Chercher d’abord s’il est possible d’installer un package avec conda, notamment via conda-forge.
- S’il n’est pas disponible, alors l’installer avec
pip
. - Éviter d’installer un même package une fois avec
conda
, un autre avecpip
, cela risque de créer des problèmes de dépendance. - Pour savoir quels packages ont été crées avec conda, et quels autres avec pip, il suffit d’appeler
conda list
qui donne le chanel d’installation.
Mieux
- Installer Jupyter lab dans l’environnement conda base
- Y installer aussi nb_conda_kernel, un package qui permet la détection automatique des environnements conda par Jupyter lab
Pour que nb_conda_kernel détecte bien les environnements, il faut que ipykernel y soit installé, installer aussi ipywidgets, qui est reponsable d’un certain nombre de fonctionnalités jupyter, même s’il n’est pas obligatoire à proprement parler. Donc, dans chaque environnement conda, installer ipykernel et ipywidgets.
- Appeler Jupyter Lab depuis conda (base) et choisir son environnement depuis la page d’accueil.
Poetry
poetry est un outil très intéressant. Mais il gère exclusivement les dépendances de paquets python, pas les dépendances systèmes (C, Fortran…). Or, en data science, on a beaucoup de paquets compilés de ce type. poetry communique avec PyPi. Donc, pour un workflow data science, où il ne s’agit pas de créer un package Python, conda est préférable.
Divers
- Jupyter lab doesn’t come with an icon, I have one because I installed Jupyter Desktop and then uninstalled it. It created a Desktop configuration file in ~/.local/share/applications and added and icon to ~/local/share/icons/…
- Exemple de conflit de dépendance si on ne crée pas d’environnement virtuel : Harlequin & Jupyter.