Qu’est-ce qu’une dépendance ?
cuisine logicielle et dépendances
Le code source pour être exécuté dans les deux cas a besoin de dépendances, des librairies R ou Python que vous avez besoin d’installer avant d’exécuter le code.
Parfois le chargement de ces dépendances vont entraîner le chargement de dépendances dont dépendent à leur tour ces dépendances et ainsi de suite.
Ces relations de dépendances peuvent s’exprimer au moyen de graphes.
On peut dire que déployer un environnement computationnel, c’est déployer un graphe où chaque noeud représente une partie du code source et des paramètres à prendre en compte et les arètes représentent leur relation de dépendance : quel code dépend de quel autre code ?📓 1.
Les gestionnaires de paquets mettent en oeuvre ces graphes. Si l’on prend le CRAN, le gestionnaire de paquets le plus utilisé pour la programmation avec R, un paquet comme Cranly permet de reconstituer le graphe de dépendances pour n’importe quel paquet présent dans ce gestionnaire.
Voir par exemple le graphe de dépendances pour le paquet Leaflet réalisé avec Cranly (script accessible depuis ce site.
versions des dépendances
Ces dépendances suivent l’évolution naturelle des programmes informatiques, elles sont fournies dans des versions qui se succèdent, à un rythme plus ou moins rapide.
Un même programme peut échouer à être exécuté si on met à jour l’une de ses dépendances. C’est même un problème extrêmement commun.
C’est pourquoi, décrire un environnement d’exécution, implique non seulement de citer les principales dépendances utilisées mais aussi leurs versions.
name: python-folium
version: 0.19.4
outputs:
+ out: tout
systems: x86_64-linux
dependencies: python-branca@0.7.2 python-geopandas@1.1.1 python-jinja2@3.1.2
+ python-nbconvert@7.16.6 python-numpy@2.3.1 python-pandas@2.3.3
+ python-pillow@11.1.0 python-pytest@8.4.1 python-requests@2.32.5
+ python-selenium@4.34.2 python-setuptools-scm@8.3.1 python-setuptools@80.9.0
+ python-wheel@0.46.1 python-xyzservices@2025.4.0
Dans le cas ci-dessus, la version folium pour Python 0.19.4 fonctionne bien avec la version de branca 0.7.2. Le chargement d’une version plus récente de folium nécessitera peut-être la mise à jour consécutive de branca ou d’une autre dépendance.
dépendances logicielles, dépendances système
Un même programme peut parfois être installé tantôt comme une dépendance logicielle liée à un langage et à un logiciel qui utilise ce langage, tantôt comme une dépendance système qui vient s’installer à côté du système d’exploitation (Windows, GNU/Linux, MacOS)
Par exemple, l’outil de conception de cartes, Leaflet, qui est à la base une librairie écrite en javascript, peut-être en même temps installée dans le système depuis un gestionnaire de paquets en javascript (npm) ou bien être installé au niveau de R seulement comme un package R (r-leaflet est présent dans le CRAN)
Lorsque les deux librairies ont été chargées, la première peut causer des interférences avec la seconde au moment de l’exécution du code source.
Dans la mesure où les dépendances de r-leaflet peuvent elles aussi entrer en conflit avec d’autres dépendances provenant du système d’exploitation, la prévention de ces conflits entre dépendances est un enjeu important de développement.
L’environnement virtuel apporte une réponse à cet environnement.