26 points par geniuskey 2024-07-14 | 5 commentaires | Partager sur WhatsApp

Modern Good Practices for Python Development

Les bonnes pratiques modernes de Stuart Ellis pour Python présentent les points importants à prendre en compte lors du développement en Python. Les principaux éléments sont les suivants :

Utiliser Python

  • Éviter d’utiliser le Python intégré au système d’exploitation : il peut s’agir d’une version ancienne.
  • Installer Python avec un outil prenant en charge plusieurs versions : utiliser des outils comme pyenv ou mise.
  • Utiliser une version récente de Python : employer la dernière version stable pour bénéficier des correctifs de sécurité et des améliorations de performances.
  • Utiliser pipx pour exécuter les applications destinées aux développeurs : pipx permet de les exécuter dans un environnement isolé.
  • Utiliser des outils de projet : PDM, Hatch, Mise, Rye sont recommandés.

Développer des projets Python

  • Mettre en forme le code : utiliser Ruff.
  • Linter le code : Ruff est recommandé.
  • Tester avec pytest : utiliser les plugins associés (pytest-randomly, pytest-cov).
  • Packaging : utiliser des paquets wheel et, si nécessaire, des images de conteneur ou PyInstaller.

Syntaxe du langage

  • Utiliser les indications de type : PEP 484, PEP 526.
  • Formater les chaînes avec les f-strings : PEP 498.
  • Utiliser des objets datetime conscients du fuseau horaire : PEP 615.

Conception d’applications

  • Utiliser logging au lieu de print().
  • Utiliser le format TOML pour la configuration : PEP 680.
  • N’utiliser les E/S asynchrones qu’en cas de besoin.

Bibliothèques

  • Traiter les entrées en ligne de commande avec argparse.
  • Gérer les chemins de fichiers et de répertoires avec pathlib.
  • Utiliser os.scandir() à la place de os.listdir(), plus rapide et plus efficace : PEP 471.
  • Utiliser subprocess pour exécuter des commandes externes : PEP 324.
  • Utiliser httpx plutôt que requests comme client web.

Bonnes pratiques de projet

Pour plus de détails, consultez l’article complet.
.
.

Résumé de la discussion Hacker News sur Python Modern Practices

Dans la discussion Hacker News sur Python Modern Practices, les utilisateurs ont partagé leurs avis sur divers outils et méthodologies :

  1. Recommandation d’utiliser UV : UV est rapide, simple à utiliser et bien pris en charge en cas de problème. par screye
  2. Mention de Rye : Rye prend en charge le pinning et le téléchargement de l’interpréteur Python, et une intégration avec uv est prévue. par rat87
  3. Insistance sur la simplicité des outils actuels : avec un environnement Mamba et pip de base, il n’y a pas de problème, et il ne ressent pas le besoin de changer d’outils. par helsinki
  4. Préférence pour les outils de base : pip, venv et virtualenvwrapper suffisent pour résoudre la plupart des problèmes. par throwadobe
  5. Défense de Pipenv : Pipenv a été utilisé comme solution complète, et il ne comprend pas pourquoi il n’est pas davantage adopté. par routerl
  6. Problèmes de Poetry : Poetry a déçu à cause de problèmes tels que l’impossibilité d’ajouter des identifiants de version issus des commits Git. par alisonatwork
  7. Conda et Mamba : Conda est bien plus puissant pour la gestion des dépendances, et Mamba est plus rapide. par wanderingmind
  8. Problèmes de packaging : les problèmes de packaging de Python sont largement d’ordre social et resteront toujours un sujet. par jampekka
  9. Proposition d’alternative à Pyenv : Mise est plus rapide que Pyenv et prend aussi en charge les projets Node. par odie5533
  10. Modèles Pydantic et dataclasses : les modèles Pydantic offrent une validation puissante mais sont lents, tandis que les dataclasses sont légères et efficaces. par martinky24

Pour plus de détails, consultez la discussion Hacker News.

5 commentaires

 
kaydash 2024-07-15

Il n’y a pas de contenu sur l’allègement des bibliothèques.
L’utilisation d’environnements virtuels de miniconda3, avec suppression des bibliothèques inutilisées pour une distribution portable, a garanti de meilleures performances dans des systèmes de traitement distribué comme Yarn.

 
savvykang 2024-07-15

Pourquoi faudrait-il utiliser pip-tools ou uv ? Il n’y a absolument aucun fondement aux affirmations selon lesquelles ce serait moderne ou meilleur.

 
savvykang 2024-07-15

Il semble qu’il y ait un problème dans le comportement actuel de pip : on ne peut pas spécifier la version de build, ce qui explique pourquoi il faudrait inclure des hachages dans les spécificateurs de dépendance pip (problème actuel de pip qui empêche de spécifier la version de build). Sans ce contexte, un guide qui se contente d’énumérer des consignes ne paraît pas très convaincant.

 
jwseo 2024-07-16

Vous utilisez principalement quoi ??

 
savvykang 2024-07-16

Jusqu’à présent, je travaillais simplement avec pip freeze ; je ne choisissais que des bibliothèques compatibles Windows/Linux, et je n’ai encore jamais eu de problème causé par un changement de version de patch. Cela dit, maintenant que je connais le problème, j’en comprends la nécessité ; je prévois simplement d’envisager l’utilisation de pip-tools ou de uv lorsqu’ils seront un peu plus matures.