Depuis la mi-2024 il semble que nous n’ayons plus le droit d’utiliser les paquetages issus de certains canaux d’Anaconda, car les conditions d’utilisation (ToS) ont évolué. Par mesure de précaution il faut modifier les procédures d’installation et s’assurer qu’elles sont bien conformes à la politique de l’établissement si on évolue dans un environnement professionnel.
Article mis à jour en Mai 2026.
Navigation dans le guide
Guide [ Installation de Python sous Win-x64 ]
1. Définition du problème
Le problème vient d’un point des ToS (Terms of Service) d’Anaconda qui porte sur les conditions d’utilisation par une organisation. Au delà de 200 employés ou sous-traitants, l’utilisation d’Anaconda est considérée comme une utilisation organisationnelle. Les organisations gouvernementales ou à buts non lucratifs sont incluses dans cette définition. Les entités éducatives ne peuvent l’utiliser que pour des cours, ce qui exclue le travail scientifique en laboratoire. Je ne comprends pas très bien si les ToS ne concernent que des distributions professionnelles/enterprise, mais les conditions couvrant Miniconda sont plus éclairantes: l’utilisation de Miniconda pour extraire des mises à jour des packages de certains canaux Conda constitue une violation des conditions de services.
Alors quels sont ces canaux ? Il faut éviter les canaux sous licence: anaconda, anaconda-extras, defaults (main, r et msys2). Dans l’installation de l’environnement (base) nous utilisions préférentiellement le canal defaults qu’il va falloir abandonner au profit de conda-forge, qui était réservé aux paquetages aux environnement de production.
Coté distribution, Miniconda reste libre d’utilisation, mais son installation doit être revue pour bloquer le canal defaults. Une autre possibilité est d’utiliser Miniforge (qui inclue conda et mamba) et qui utilise le canal conda-forge par défaut. Mamba est un gestionnaire de paquet rapide (implémenté en C/C++) qui utilise la même syntaxe que conda (implémenté en Python).
2. Reconfigurer une installation de Miniconda
La première étape est de vérifier les canaux avec une commande conda config, puis d’enlever les canaux defaults, et de vérifier ce qui s’est passé avec une nouvelle commande conda config:
conda config --show channelsconda config --remove channels defaultsconda config --show channels |
Une autre manière de savoir ce qui se passe est de réaliser un export, comme si on allait partager l’environnement, par exemple:
conda env export > env_base.ymlconda env export --from-history > env_base.ymlconda env export --no-builds > env_base.yml |
Normalement dans la section channels: il ne doit y avoir que conda-forge (et d’autres environnements qui ne sont pas sous licence comme bioconda). Il est utile aussi de vérifier le fichier .condarc qui peut encore contenir un appel vers d’autres canaux alternatifs (s’il ne trouvait pas conda-forge) ce qui laisse un risque de violation de licence.
D’une manière complémentaire, on peut bloquer des adresses sur le réseau, soit au niveau du poste (Firewall Windows ou UFW Linux), soit au niveau du firewall. Il s’agit des URLs en [ https://repo.anaconda.com ] et [ https://conda.anaconda.org ]. Sauf que certains canaux peuvent être hébergés via anaconda.org. Il faut donc descendre les localisation des dépôts /pkgs/main/, /pkgs/r/ … La liste est disponible sur plusieurs sites, incluant [ https://docs.anaconda.com/working-with-conda/reference/default-repositories/ ] et celui de l’IRD (cf. liens et lectures).
Il faut également faire attention lors de l’installation des paquets, en spécifiant systématiquement le canal source dans la commande, par exemple :
conda install --channel conda-forge nom_du_paquetconda install -c bioconda nom_du_paquet |
3. Application (mise en conformité)
Maintenant il faut tester tout cela, voyons par nous mêmes sur l’environnement (base) :
(base) C:\Dev>conda config --show channelschannels:- defaults(base) C:\Dev>conda config --remove channels defaults(base) C:\Dev>conda config --add channels conda-forge(base) C:\Dev>conda config --show channelschannels:- conda-forge(base) C:\Dev>cat C:\Users\utilisateur\.condarcchannels:- conda-forge |
Jusqu’ici tout va bien, voyons avec le fichier YAML :
(base) C:\Dev>conda env export > env_base.yml
|
Le canal defaults est toujours présent, ce qui se confirme avec un update (interrompu) :
(base) C:\Dev>conda update -n base -c conda-forge condaRetrieving notices: ...working... doneChannels:- conda-forge- defaultsPlatform: win-64Collecting package metadata ... |
On peut essayer conda config --add channels nodefaults qui ne changera rien, nous avons defaults, nodefaults, conda-forge dans le fichier YAML et defaults à l’update. Explication, le canal defaults est codé en dur, mais nous avons la possibilité d’utiliser l’option --override-channels, par exemple :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
(base) C:\Dev>conda update --override-channels -n base -c conda-forge conda Channels: - conda-forge Platform: win-64 Collecting package metadata (repodata.json): done Solving environment: done ## Package Plan ## environment location: C:\Python3 added / updated specs: - conda The following packages will be downloaded: package | build ---------------------------|----------------- ca-certificates-2024.12.14 | h56e8100_0 154 KB conda-forge certifi-2024.12.14 | pyhd8ed1ab_0 158 KB conda-forge conda-24.11.2 | py310h5588dad_0 909 KB conda-forge ucrt-10.0.22621.0 | h57928b3_1 547 KB conda-forge vc14_runtime-14.42.34433 | he29a5d6_23 737 KB conda-forge vs2015_runtime-14.42.34433 | hdffcdeb_23 17 KB conda-forge ------------------------------------------------------------ Total: 2.5 MB The following NEW packages will be INSTALLED: python_abi conda-forge/win-64::python_abi-3.10-2_cp310 ucrt conda-forge/win-64::ucrt-10.0.22621.0-h57928b3_1 vc14_runtime conda-forge/win-64::vc14_runtime-14.42.34433-he29a5d6_23 The following packages will be UPDATED: ca-certificates pkgs/main::ca-certificates-2024.9.24-~ --> conda-forge::ca-certificates-2024.12.14-h56e8100_0 certifi pkgs/main/win-64::certifi-2024.8.30-p~ --> conda-forge/noarch::certifi-2024.12.14-pyhd8ed1ab_0 conda pkgs/main::conda-24.9.2-py310haa95532~ --> conda-forge::conda-24.11.2-py310h5588dad_0 openssl pkgs/main::openssl-3.0.15-h827c3e9_0 --> conda-forge::openssl-3.4.0-h2466b09_0 vs2015_runtime pkgs/main::vs2015_runtime-14.40.33807~ --> conda-forge::vs2015_runtime-14.42.34433-hdffcdeb_23 Proceed ([y]/n)? |
C’est très bien, mais nous voyons que le canal conda-forge s’applique aux mises à jour de paquets qui concernent conda, mais qu’il ne remplace pas les autres paquets existants. Dans ce cas, il faut utiliser l’option --all :
conda update --override-channels -n base -c conda-forge --all |
Et la ça va faire mal, en extrait :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
The following NEW packages will be INSTALLED: fonts-conda-forge conda-forge/noarch::fonts-conda-forge-1-0 h2 conda-forge/noarch::h2-4.1.0-pyhd8ed1ab_1 hpack conda-forge/noarch::hpack-4.0.0-pyhd8ed1ab_1 ... statsmodels conda-forge/win-64::statsmodels-0.14.4-py310hb0944cc_0 xz-tools conda-forge/win-64::xz-tools-5.6.3-h2466b09_1 zipp conda-forge/noarch::zipp-3.21.0-pyhd8ed1ab_1 The following packages will be UPDATED: asttokens pkgs/main::asttokens-2.0.5-pyhd3eb1b0~ --> conda-forge::asttokens-3.0.0-pyhd8ed1ab_1 attrs pkgs/main/win-64::attrs-24.2.0-py310h~ --> conda-forge/noarch::attrs-24.3.0-pyh71513ae_0 beautifulsoup4 pkgs/main/win-64::beautifulsoup4-4.12~ --> conda-forge/noarch::beautifulsoup4-4.12.3-pyha770c72_1 ... zeromq pkgs/main::zeromq-4.3.5-hd77b12b_0 --> conda-forge::zeromq-4.3.5-he0c23c2_3 zlib pkgs/main::zlib-1.2.13-h8cc25b3_1 --> conda-forge::zlib-1.2.13-h2466b09_6 zstandard pkgs/main::zstandard-0.23.0-py310h4fc~ --> conda-forge::zstandard-0.23.0-py310he5e10e1_1 The following packages will be SUPERSEDED by a higher-priority channel: archspec pkgs/main::archspec-0.2.3-pyhd3eb1b0_0 --> conda-forge::archspec-0.2.3-pyhd8ed1ab_0 cffi pkgs/main::cffi-1.17.1-py310h827c3e9_0 --> conda-forge::cffi-1.17.1-py310ha8f682b_0 conda-content-tru~ pkgs/main/win-64::conda-content-trust~ --> conda-forge/noarch::conda-content-trust-0.2.0-pyhd8ed1ab_0 ... tzdata pkgs/main::tzdata-2024b-h04d1e81_0 --> conda-forge::tzdata-2024b-hc8b5060_0 yaml-cpp pkgs/main::yaml-cpp-0.8.0-hd77b12b_1 --> conda-forge::yaml-cpp-0.8.0-h63175ca_0 zstd pkgs/main::zstd-1.5.6-h8880b57_0 --> conda-forge::zstd-1.5.6-h0ea2cb4_0 |
L’installation fonctionne, mais n’est plus la même, des versions de paquetages peuvent être différentes. Pour valider l’installation, il faut aussi faire la mise à jour sur l’environnement (prod) de manière à voir s’il y a des incohérences et des dépendances non résolues.
(prod) C:\Dev>conda config --set channel_priority(prod) C:\Dev>conda config --show channelschannels:- nodefaults- conda-forge |
Donc, il n’y a rien de spécial à faire avant de lancer l’update sur tous les paquets.
(prod) C:\Dev>conda update --override-channels -n prod -c conda-forge --all |
Globalement, il n’y a pas d’erreurs, il faut donc sauver les profils de paquetages qui caractérisent les environnements. Ce qui peut être fait avec les scripts install-base.bat et install-prod.bat en spécifiant un fichier de spécification (specfile) et non une nouvelle installation. Il faut aussi valider les paquetages avec la suite de tests de manière à finaliser.
Au final, c’est une méthode qui marche si on veut rapidement se mettre en conformité en gardant une installation existante qui était déjà en partie validée sous conda-forge.
L’autre possibilité (préférée) étant de travailler à partir d’une installation basée sur Miniforge.
Liens et lectures
- Anaconda Terms of Service[ https://legal.anaconda.com/policies/en/ ].
- Les distributions de Conda [ https://mivegec.pages.ird.fr/dainat/malbec-fix-conda-licensing-issues/fr/pages/conda-distrib/ ].
- Canaux sous licence Anaconda Inc. [ https://mivegec.pages.ird.fr/dainat/malbec-fix-conda-licensing-issues/fr/pages/conda-channels/ ].
- Conda-forge et miniforge [ https://conda-forge.org/ ].
- Mamba [ https://mamba.readthedocs.io/en/latest/ ].