Jean-Jil Duchamps

Comment gérer Python sans casser Anaconda

Ce mini-guide sert à donner des bases pour installer des paquets via pip (le gestionnaire de paquets officiel de Python) sans casser Anaconda (ou plus spécifiquement, votre environnement de base d'Anaconda).

Il est écrit car je me rends compte qu'en M2, avec certains cours qui demandent des paquets spécifiques, on a tendance à utiliser pip pour installer ces paquets, comme recommandé dans leurs documentations. Or il faut être un peu prudent quand on utilise pip en conjonction avec Anaconda car il y a alors deux gestionnaires de paquets qui s'ignorent l'un l'autre et cela peut créer des soucis de compatibilité entre vos paquets. De plus, l'expérience montre qu'Anaconda est un peu limité en ce qui concerne l'installation de Tensorflow pour le cours de Deep learning (en 2025 en tout cas, on a une version qui n'est pas à jour, et une installation interminable).

Je propose deux solutions propres pour installer vos paquets préférés. Initialement je ne parlais que de la deuxième, mais l'expérience montre que vous n'accrochez pas forcément, ça paraît peut-être plus compliqué puisque il y a pas mal d'étapes et demande plus d'utilisation de la ligne de commande. En deux mots, les deux méthodes sont les suivantes :

J'ai parlé d'environnements sans trop expliquer ce que c'est. Un environnement virtuel est une installation de paquets séparée de votre installation "de base" (que ce soit une installation système ou l'environnement de base de conda). De manière générale, cette installation n'interagit pas avec le reste de votre ordinateur, sauf quand vous le voulez: il faut par exemple activer un environnement pour utiliser les paquets spécifiques, etc. Si vous avez installé Anaconda, vous avez déjà un environnement d'installé sur votre ordinateur (l'environnement de base selon Anaconda). Dans tous les cas, vous avez sans doute une installation Python dans votre système, celle qui est appelée quand vous tapez python dans un terminal.

Les environnements sont utiles si vous souhaitez installer un paquet non compatible avec votre environnement actuel, ou carrément une nouvelle version de python. C'est particulièrement utile si vous voulez travailler sur un projet qui utilise un ensemble de paquets dans des versions bien spécifiques. En général les projets Python mettent à disposition un fichier requirements.txt qui fait la liste de toutes les dépendances (paquets utiles au projets), où un autre fichier spécifique au gestionnaire de projet utilisé (par exemple Poetry ou Pipenv, dont je parle plus bas).

Dans la suite de ce texte, je parle spécifiquement du cadre du cours de Deep Learning. Notre premier but est d'installer le paquet tensorflow, mais c'est une grosse machinerie avec beaucoup de dépendances, donc on ne veut pas l'installer dans notre environnement de base. À la place, on va l'installer dans son propre environnement. Les mêmes méthodes s'appliqueront dès que vous voudrez installer et utiliser des paquets hors de votre environnement de base.

Vous pouvez maintenant passez :

Méthode conda

Si vous avez déjà installé Anaconda, vous avez accès à Jupyter Lab dans votre environnement de base, c'est à peu près tout ce qu'on veut. Mais ce n'est pas tout à fait le cas: assurez-vous d'abord que le paquet nb_conda_kernels est installé dans votre environnement de base (c'est ce qui permettra d'utiliser vos environnements depuis Jupyter). Pour installer un paquet dans Anaconda Navigator, voir la documentation. Sinon, ouvrez Anaconda Prompt et tapez

conda install nb_conda_kernels

Ensuite on va créer un environnement appelé deep_learning, en utilisant la dernière version de Python compatible avec le paquet tensorflow. Au moment où j'écris ceci, c'est la version 3.12 qui est indiquée sur le site de tensorflow. On va aussi rajouter les paquets que l'on utilise couramment, c'est-à-dire Numpy, Matplotlib et Pandas, puis un dernier paquet ipykernel qui servira à utiliser l'environnement depuis Jupyter. Pour le faire depuis l'interface graphique, suivez encore la documentation, et sinon tapez simplement

conda create -n deep_learning python=3.12 numpy matplotlib pandas ipykernel

Enfin il faut installer tensorflow dans ce nouvel environnement (ne pas le faire depuis (Ana)conda). On passe nécessairement par Anaconda Prompt, et on tape

conda activate tensorflow
pip install tensorflow

C'est tout, vous êtes maintenant prêt⋅es à utiliser votre environnement deep_learning depuis Jupyter (en sélectionnant le bon kernel quand nécessaire) où depuis la ligne de commande (dans ce cas, ne pas oublier de taper d'abord conda activate deep_learning, sinon c'est l'environnement de base qui est actif par défaut.

Pour utiliser cet environnement depuis Spyder (si c'est votre éditeur préféré), il me semble qu'il faut rajouter le paquet spyder-kernels à votre environnement préféré, puis depuis Spyder, il faut "créer une console" adaptée depuis le menu "Consoles > New console in environment", avant d'exécuter votre script. Si vous avez un autre éditeur préféré, vous savez comment cherchez sur internet comment faire ceci.

Sinon je donne aussi les instructions pour installer Python et Jupyter Lab sans nécessiter Anaconda (c'est plus léger mais vous n'aurez pas d'icône de lancement de Jupyter, par exemple).

Méthode Pipenv

Je donne dans ce qui suit les grandes lignes nécessaire à l'installation de Python, Jupyter, Pipenv sans avoir nécessairement installé Anaconda ou miniconda.

NB: je n'ai pas testé la méthode sous Windows ou macOS, il faut sans doute se référer aux documentations officielles pour l'installation des divers programmes que je recommande.

Installer Python, pipx et Jupyter Lab

Linux

Si vous êtes sur Ubuntu / Mint / Debian, les lignes de commandes suivantes installent d'abord Python et pipx sur votre ordinateur, puis on utilise pipx pour installer Jupyter Lab en tant qu'exécutable.

sudo apt install python3 python3-pip pipx
pipx install jupyterlab
pipx inject --include-apps jupyterlab notebook jupyter_client

Vous pourrez ensuite (pas maintenant, ce n'est pas fini) lancer Jupyter Lab en exécutant jupyter-lab depuis le terminal. La troisième ligne permet aussi de lancer la version "notebook" de Jupyter avec jupyter-notebook, et de gérer les "kernels" disponibles dans Jupyter (voir plus bas).

Si vous n'êtes pas sur Ubuntu / Mint / Debian, j'imagine que vous savez utiliser votre gestionnaire de paquets, et Jupyter Lab est peut-être directement installable via celui-ci (pas le cas sous Debian).

Windows ou macOS

Utilisez l'installateur Python le plus récent pour Windows ou macOS, puis ouvrez un terminal (cherchez Windows Powershell, ou Terminal) et lancez la commande:

pip install jupyterlab

Vous pourrez ensuite (pas maintenant, ce n'est pas fini) lancer Jupyter Lab en exécutant jupyter lab depuis le terminal. La version "Notebook" de Jupyter devrait elle aussi être installée, on peut la lancer avec jupyter notebook.

Installer Pipenv

Pipenv permet de gérer des environnements Python projet par projet, et on l'utilise depuis la ligne de commande. On se place donc dans notre dossier spécifique au projet avant d'utiliser nos commandes Pipenv. À partir de maintenant si vous voulez utiliser Pipenv dans un projet, je vous déconseille d'installer quoi que ce soit directement avec pip dans votre environnement de base. À la place, vous pouvez créer un environnement adapté avec les instructions qui suivent.

Linux

Si vous êtes sur Ubuntu / Mint / Debian:

sudo apt install pipenv

Sinon vous pouvez sans doute suivre les instructions pour Windows ou macOS.

Windows ou macOS

Ouvrez un terminal (cherchez Windows Powershell, ou Terminal) et lancez la commande:

pip install --user pipenv

Utiliser Pipenv pour gérer un environnement

On va maintenant créer un environnement et faire en sorte de pouvoir l'utiliser depuis Jupyter. Ici, on utilise l'exemple de créer un environnement spécifique au Deep learning, qui contiendra en particulier Tensorflow, et que l'on nommera deep_learning.

  1. Créez d'abord le dossier qui servira de base à vos TP de Deep Learning. Il contiendra les informations nécessaires à Pipenv pour gérer votre environnement. Par exemple, vous pouvez créer un dossier Projets dans votre répertoire personnel, puis un sous-dossier du nom souhaité pour l'environnement, ici deep_learning.

  2. (Important) Placez-vous dans ce dossier depuis un terminal. Rappelez-vous, on se déplace avec la commande cd (oui, même sur Windows ou macOS).

  3. Création de l'environnement, avec Numpy, Matplotlib et Tensorflow. On rajoute un paquet ipykernel qui servira à faire le lien avec Jupyter dans l'étape suivante.

    pipenv install numpy matplotlib tensorflow ipykernel
    
  4. Création du kernel Jupyter lié à cet environnement.

    pipenv run ipython kernel install --user --name deep_learning
    

Voilà, maintenant vous pouvez lancer Jupyter, et créer un nouveau notebook en choisissant le kernel qui s'appelle deep_learning. Si plus tard, vous avez besoin de créer un nouvel environnement contenant des paquets spécifiques, vous pouvez répéter les étapes ci-dessus en adaptant les noms des paquets et de l'environnement.

Vous pouvez aussi directement installer de nouveaux paquets dans un environnement existant. Pour faire cela, placez-vous dans le dossier correspondant à l'environnement existant et lancez:

pipenv install [noms des paquets souhaités]

Un défaut: plus vous avez de paquets, plus vous avez de risques de non-compatibilité avec de nouveaux paquets en fonction des versions installées. Parfois ça plantera, et la solution est probablement de créer un nouvel environnement.

Pour finir: vous pouvez vouloir désinstaller un kernel Jupyter, si vous n'utilisez plus un ancien environnement par exemple, et que la liste de vos kernels est trop longue. Pour cela, ouvrez un terminal, puis lancez:

jupyter-kernelspec uninstall deep_learning

(ou bien remplacez deep_learning par le nom du kernel à supprimer). Si vous voulez carrément supprimer un environnement (et tous les paquets installés avec, qui prennent de la place sur votre ordinateur), déplacez-vous dans le dossier de l'environnement, puis lancez pipenv --rm. Enfin, vous pouvez supprimer le dossier en question (attention, vous avez peut-être créé des documents de travail dans ce dossier: vérifiez d'abord !).

En bonus: utiliser pyenv pour gérer différentes versions de Python

pyenv permet d'installer de manière indépendante différentes versions de Python, pour votre usage de développement (n'interfère pas avec l'éventuelle version de Python utilisé par votre système). L'intérêt: si vous faites du développement de manière un peu sérieuse avec plusieurs projets en paralèlle, passer d'un projet à un autre nécessitera peut-être de changer de version de Python, pour des raisons de compatibilité. En effet, s'assurer que le code d'un projet fonctionne comme attendu avec la nouvelle version de Python prend du temps, d'autant plus pour un gros projet avec de nombreuses dépendances. Bref, ça n'est pas toujours prioritaire (ou possible immédiatement) et inévitablement vous devrez gérer cette question.

Heureusement, pyenv permet ça très facilement, et cerise sur le gâteau, Pipenv reconnaît pyenv et fonctionne avec. C'est-à-dire qu'après l'installation des deux outils, si l'on veut démarrer un projet avec une version précise de Python:

pipenv --python 3.12 install numpy matplotlib

alors Pipenv cherchera automatiquement une version de Python 3.12 sur votre ordinateur et vous proposera de l'installer via pyenv si nécessaire. En gros, après son installation, vous n'avez presque pas à savoir comment pyenv fonctionne (enfin c'est un mauvais conseil: allez voir la documentation pour voir les possibilités de cet outil).

NB: conda permet aussi d'installer différentes versions de Python sur votre ordinateur, mais elles seront liées à des environnements conda. Je ne sais pas si Pipenv permet d'utiliser ces versions dans ses projets (enfin sans doute que si, mais je ne sais pas si c'est pratique !).