MakeMake The Dwarf Planet is a feed agregator.

Gestion de dépendances en python

by uneTanche from Linuxfr.org

Sommaire

Je vous partage ici mon retour d'expérience sur la gestion des dépendances en python.

L'article original est disponible ici.

Intro

Dans le cadre de mon travail, j'ai régulièrement besoin d'écrire des scripts en python ou bien des notebook Jupyter. Je n'ai pas particulièrement d'affinité avec ce langage, disons qu'il s'est imposé à moi :-) En revanche, il y a quelque chose qui me chagrine, c'est la gestion des dépendances. C'est particulièrement agaçant de reprendre un script et de voir que les dépendances ne sont pas indiquées ou bien il manque leur version et loi de Murphy oblige, l'API a bougé… Bref, je peux lister les problématiques suivantes dans la gestion des dépendances de mes projets python:

  • lister les dépendances
  • fixer la version des dépendances
  • fixer la version des dépendances des dépendances
  • Obtenir les dépendances, comment travailler hors-ligne, que faire si pypi tombe

On peut déjà indiquer quelques solutions qui font consensus pour gérer une partie de ces problèmes. En particulier, on peut commencer par lister nos dépendances dans un fichier texte. Si vous utilisez pip pour installer vos dépendances, il dispose d'une solution standardisée: requirements.txt

Cette solution permet de résoudre nos deux premiers problèmes:

  • lister les dépendances: scipy matplotlib numpy
  • fixer la version des dépendances: scipy == 1.18.* matplotlib == 3.11.2 numpy == 2.5.4
  • fixer la version des dépendances des dépendances ---> _(oO)_/
  • Obtenir les dépendances, comment travailler hors-ligne, que faire si pypi tombe --> _(oO)_/

Cependant lorsqu'on reprend un vieux script, il arrive parfois que la version indiquée dans le fichier requirements.txt ne soit plus distribué sous format binaire par pypi. Il faut alors compiler nous-même cette dépendance. Un cas concret: si je reprends mon exemple précédent mais que je fixe numpy == 2.0.*, une version qui a un peu plus de deux ans lorsque j'écris ces lignes. Pypi ne propose plus de télécharger directement les fichiers pré-compilés (wheels). pip va donc télécharger les sources et compiler le projet sur votre ordinateur. C'est à ce moment-là que ça peut se compliquer. En effet, certain projet ont la réputation d'être difficile à compiler. Maintenant extrapolons cette situation sur toute une cascade de dépendances, et vous apercevez la profondeur du gouffre…

Rappelons-le, à la base on souhaitait simplement re-utiliser un script sur un vieux projet ;-)

Zig

Un autre langage que j'utilise régulièrement: zig, je l'apprécie pour bien des raisons et l'une d'entre elles est sa gestion des dépendances. Pour résumer trivialement (explications valable pour la version 0.16.0 et 0.17.x, ces caractéristiques sont susceptibles d'évoluer):

  • les dépendances sont listées dans un fichier texte: build.zig.zon
  • chaque dépendance est fixée sur une révision de commit ou une version donnée
  • les sources des dépendances sont téléchargées dans le répertoire zig-pkg (on peut si nécessaire les ajouter au VCS)
  • On peut spécifier un fork local d'une dépendance (c'est toujours utile en phase de dev)

Pour plus d'informations, n'hésitez pas à lire ce post: Two Package Management Workflow Enhancements.

Pourquoi je vous parle de ça ? Parque j'aimerai bien retrouver un comportement similaire pour mes scripts en python…

Dépendances Python à la Zig

La première fonctionnalité et sûrement la plus simple, la gestion d'un fork. pip gère nativement ce problème, il vous suffit d'installer la dépendance avec la commande suivante:

pip install -e path/to/project

Si votre paquet était déjà présent dans votre installation alors pip va le supprimer et ajouter le répertoire de votre projet à la liste des chemins d'import. Et c'est tout. Maintenant lorsque vous modifiez votre fork en local, les changements sont directement pris en compte dans votre projet.

Récupération des dépendances

Passons maintenant à la partie récupération en local des dépendances. On commence par créer un répertoire py-pkg à la racine de votre projet. Maintenant, on va se servir de pip pour télécharger l'ensemble des dépendances dans ce répertoire:

py -m pip download --destination-directory py-pkg -r requirements.txt

pip va télécharger les fichiers wheels de l'ensemble des dépendances dans ce dossier, mais aussi des dépendances de
vos dépendances et ainsi de suite.

Attention
Less fichiers wheels sont des fichiers binaires dépendant de la
plateforme cible (car compilés). On peut toujours télécharger les sources avec la
commande py -m pip download --no-binary :all: mais la doc le déconseille, car
certain paquet sont difficiles à compiler… De plus, après avoir testé, ça ne
télécharge que la dépendance et non toutes l'arborescence de dépendances…

Configuration à partir d'une archive

Il n'est pas conseillé d'ajouter ces versions à votre VCS, car ce sont des fichiers binaires dépendants de votre plateforme, mais vous pouvez au moins les ajouter à votre archive lorsque vous taguez une nouvelle version de votre script.

Maintenant, on peut installer les dépendances de notre projet à partir de leur archive:

py -m venv .env
source .env/bin/activate
py -m pip install --no-index --find-links=py-pkg -r requirements.txt

Quelques liens utiles

Conclusion

Cette solution ne permet pas d'obtenir un fonctionnement calqué sur celui de zig. Cependant, elle permet de pérenniser l'archivage de vos scripts et de ses dépendances.
En effet, en archivant les fichiers wheel de votre projet vous vous assurez de pouvoir le réutiliser sans soucis le jour venu. Enfin, si vous disposez toujours d'un interpréteur python compatible…

Ces problèmes n'en finiront jamais ;-)

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Sur Rennes : DuckDB & Parquet - L’équipe gagnante pour l’analyse de données - lundi 16 novembre 2026

by luc_sorel-giffo from AFPy discuss

Inscription gratuite mais nécessaire sur DuckDB & Parquet - L’équipe gagnante pour l’analyse de données, lun. 16 nov. 2026, 18:45 | Meetup.

Merci à Michel Caradec qui viendra nous parler de “DuckDB & Parquet - L’équipe gagnante pour l’analyse de données”.

Le langage Python peut être considéré comme le lingua franca de la manipulation de données, grâce à de nombreuses librairies permettant l’import/export de fichiers ou la transformation de données.
Mais ces solutions peuvent rapidement trouver leurs limites, en termes de consommation mémoire, de rapidité, de capacité à passer à l’échelle, mais aussi de compréhension et de maintenabilité.
Dans cette présentation, nous allons découvrir comment l’association de DuckDB avec le format Parquet peut permettre de passer outre ces difficultés, sans pour autant quitter l’écosystème Python.
Après une présentation de ces technologies (illustrée par des exemples), des retours d’expérience seront évoqués, ainsi que quelques bonnes pratiques.

Michel Caradec (profil LinkedIn) est lead software/data engineer chez Rocket Marketing, et contribue à l’offre SocialVox, solution d’influence marketing. Il travaille sur les problématiques liées au traitement des données, dans un contexte distribué et Cloud.

Sponsor
Merci à Néosoft d’accueillir cette session dans leurs locaux rue de Fougères, et pour l’apéritif convivial avec boissons et pizzas qui vous sera offert. L’inscription est gratuite, elle permet de dimensionner l’apéro ; elle engage donc à venir ou à libérer sa place en cas d’indisponibilité soudaine :folded_hands:
L’évènement est ouvert à toute personne intéressée par ces sujets, dans la limite de la jauge de 35 personnes. Une rediffusion sera disponible sur la chaîne YouTube du BreizhCamp quelques jours plus tard.

Accès

  • métro B (arrêt Atalante)
  • bus : C1 (Longs Champs), C4 (Longs Champs Est)
  • 2 parkings vélo : rue de Fougères, rue du Clos Courtel (barrière)
  • station VéloStar la plus proche : Beaulieu Université (1,6 km)
  • 2 parkings voiture : rue Jouanet, Intermarché Longs Champ (payant)
Sur Rennes : DuckDB & Parquet - L’équipe gagnante pour l’analyse de données - lundi 16 novembre 2026
Public · Créé par  luc_sorel-giffo
November 16, 2026 6:45 PM (Europe/Paris) → November 16, 2026 9:00 PM (Europe/Paris)
www.meetup.com/fr-fr/python-rennes/events/316995867/
0 utilisateur participera

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

Gitea/Forgejo migration : je ne peux pas reset mon password

by Lenormju from AFPy discuss

Bonjour,
Je m’étais créé un compte sur le Gitea lors des sprints d’octobre 2024 (pour contribuer à la traduction de la doc).
J’ai depuis appris que Forgejo avait remplacé Gitea (en Décembre 2024).

Je souhaiterais donc me connecter à mon compte Forgejo, mais je ne dispose plus de mon password. Et le reset reconnait bien mon mail, mais indique : `Non-local users cannot update their password through the Forgejo web interface.`
Donc il semblerait que je sois “non-local”. Je suppose que ça vient de la migration, mais peut-être pas.

Je tag @mdk car je suppose qu’il aura de bonnes idées.

7 messages - 4 participant(e)s

Lire le sujet en entier

Lire la suite…

Sur Lyon : Meetup le 19 novembre

by grewn0uille from AFPy discuss

Hello tout le monde,

Pour ce traditionnel meetup de retours de la PyConFR, on se retrouve le jeudi 19 novembre à 19h à la Cordée Villeurbanne - République :snake:

Retours de la PyConFR 2026
Public · Créé par  grewn0uille
November 19, 2026 7:00 PM (Europe/Paris) → November 19, 2026 9:00 PM (Europe/Paris)
www.meetup.com/fr-fr/python-afpy-lyon/events/317311531/
2 utilisateurs participeront

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

Sondage de satisfaction suite à la PyConFR 2026

by entwanne from AFPy discuss

English version (cliquer pour plus de détails)

Bonjour à toutes et tous,

Si vous recevez ce mail c’est que vous vous étiez inscrit·e à la PyConFR 2026.

Nous tenions une fois encore à vous remercier pour cette PyConFR, c’est grâce à vous et votre soutien qu’un tel événement peut se tenir !
Pour celles et ceux qui n’ont pas pu faire le déplacement, on espère vous revoir une prochaine fois. :slight_smile:

Afin de nous aider à améliorer l’évènement, nous avons préparé un court sondage pour savoir ce que vous en avez pensé.
Que vous ayez pu venir ou non, des retours positifs comme négatifs, n’hésitez pas à y répondre :

Le sondage reste ouvert jusqu’au 30 novembre 2026.

N’hésitez pas à nous suivre sur nos différents réseaux :

Bonne journée et à bientôt,
L’équipe de la PyConFR

PS : N’oubliez pas non plus, si vous le souhaitez, de partager le support de vos conférences : https://discuss.afpy.org/t/les-supports-de-presentation-de-cette-superbe-pyconfr-2026

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…