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 :
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).
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.
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).
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.
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.
Si vous êtes sur Ubuntu / Mint / Debian:
sudo apt install pipenv
Sinon vous pouvez sans doute suivre les instructions pour Windows ou macOS.
Ouvrez un terminal (cherchez Windows Powershell, ou Terminal) et lancez la commande:
pip install --user pipenv
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.
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.
(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).
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
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 !).
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 !).