Outils Python utiles

Mes amis, bonsoir! Nous avons de bonnes nouvelles, recrutement ouvert dans un nouveau groupe sur le cours "Développeur Python" . Le groupe commence déjà début juillet, et en ce moment, selon une tradition établie, nous partageons une traduction utile préparée pour les étudiants de ce cours.



Lorsque vous commencez à apprendre Python, quelqu'un vous explique que vous pouvez ajouter votre dossier source à la variable d'environnement PYTHONPATH , puis votre code peut être importé à partir d'autres répertoires. Très souvent, l'explicateur oublie de dire que dans la plupart des cas, c'est une mauvaise idée. Certaines personnes le découvrent sur Internet, d'autres le comprennent directement. Mais trop de gens (en particulier les programmeurs inexpérimentés) pensent qu'il ne peut y avoir d'autre alternative.

Cet article leur est principalement destiné, car même si vous savez qu'il existe une alternative, il n'est pas toujours facile de l'accepter et de commencer à l'utiliser. Les outils Python sont déroutants car ils sont beaucoup de logiciels construits les uns sur les autres, avec beaucoup de chevauchements et de problèmes qui en découlent. Il n'est pas facile de comprendre comment utiliser correctement ces outils dans votre projet.

Pour cette raison, j'ai décidé d'écrire cet article et de considérer les outils les plus populaires, pour savoir quand et où ils sont utilisés et quelles tâches ils résolvent. Je vais essayer d'expliquer aux doigts comment utiliser chacun de ces outils. Si l'outil figure sur cette liste, vous, en tant que pythoniste, devez au moins connaître son existence. Je ne parlerai que des outils qui peuvent être appliqués à n'importe quel projet ou flux de travail, et vous devez vous en souvenir lorsque vous démarrez un nouveau projet. Cependant, cela ne signifie pas que vous devez utiliser tous les outils présentés dans chacun de vos projets. Il n'est pas nécessaire de surcharger le projet avec des outils, dans certains cas cela peut compliquer son support.

Outils basiques


Setuptools


Setuptools est le moyen standard de créer des packages en Python. Il travaille partout et fait bien son travail.

Pourquoi : créer des fichiers egg, zip ou wheel à partir de la source, définir des métadonnées pour votre projet, un travail conjoint structuré et standardisé sur le code.
Lorsqu'il est utilisé : toujours lorsque vous écrivez du code qui doit s'exécuter sur la machine de quelqu'un d'autre.
Alternatives : Poésie, Flit

virtualenv


Virtualenv est un gestionnaire d'environnement virtuel. De tels bacs à sable sont des pythons autonomes avec un ensemble spécifique de packages préinstallés. L'utilisation de virtualenv signifie que vous n'avez pas besoin d'installer les packages sur le système python par défaut.

Pourquoi : séparation des dépendances, prise en charge de différentes versions de python par un seul système, relocalisation facile des dépendances.
Lorsqu'il est utilisé : Vous devez écrire du code, et pour cela, vous avez besoin d'une version python différente de votre version système par défaut de python.
Alternatives : Docker ou quelque chose de similaire.

Pip


Pip est le gestionnaire de packages le plus courant en python. Il vous permet d'installer des packages locaux ou distants dans votre environnement virtuel ou système Python.

Pour quoi : installer et supprimer des packages, suivre les versions des packages que vous utilisez.
Lorsqu'il est utilisé : toujours.
Alternatives : Poésie, Conda

Création et distribution de packages


Pour y regarder de plus près, python.org a une page distincte: packaging.python.org

distutils


distutils est le précurseur des setuptools. Ce dernier utilise activement la fonctionnalité distutils, il est donc souvent nécessaire d'interagir avec cet outil. Distutils n'est pas exactement l'outil que vous devriez avoir dans votre arsenal, mais vous devez savoir comment il s'intègre dans la grande image.

Pypi


Pypi ou Python Package Index est un grand référentiel qui contient tous vos modules Python préférés. Par exemple, le même pip prend des builds de paquet à partir de là.

Pourquoi : publier votre code.
Lorsqu'il est utilisé : lorsqu'il y a un package que vous souhaitez montrer à la communauté.

Pypiserver


Pypiserver est l'une des implémentations de l'API Package Index utilisée par Pypi. Vous pouvez créer votre propre référentiel, par exemple, pour l'ensemble de votre entreprise et publier des packages sans publier de versions publiques.

Pourquoi : créez vos propres référentiels au sein de l'organisation.
Lorsqu'il est utilisé : lorsque votre code n'a pas besoin de publicité, mais qu'un contrôle total est nécessaire sur celui-ci.
Alternatives : Entrepôt (utilisé par Pypi), djangopypi

Poésie


Poetry est un système de gestion de packages alternatif qui remplace setuptools, pip et certains autres outils construits sur leur base. Il s'agit d'une tentative de redéfinir complètement le fonctionnement du système de packages en Python. À ce jour, la poésie a de nombreuses critiques positives, mais n'est pas l'outil le plus courant.

Pourquoi : traitement et distribution de packages, gestion des dépendances, prévention des problèmes de résolution des dépendances.
Quand l'utiliser : lorsque vous planifiez un nouveau projet et que vous n'avez pas peur d'utiliser des outils hautement spécialisés.
Alternatives : Pipenv

Pipenv


Pipenv , comme Poetry, est un outil pour structurer les dépendances et configurer les projets Python d'une manière plus saine. Avec Pipfile, il gère les dépendances de votre projet et garantit la cohérence et la facilité d'utilisation.

Pourquoi : traitement et distribution de packages, gestion des dépendances.
Lorsqu'il est utilisé : vous avez besoin d'un outil comme la poésie qui posera moins de questions.
Alternatives : Poésie.

La documentation


Sphinx


Sphinx est un outil de création de documentation. Il a été initialement créé pour gérer la documentation Python, mais est devenu un outil courant. C'est l'option la plus courante pour les projets Python.

Pourquoi : créer des documents PDF ou HTML à l'aide d'un langage de balisage à partir de sources reStructuredText.
Lorsqu'il est utilisé : lorsque votre projet, API ou code nécessite une documentation externe.
Alternatives : Docutils, Doxygen

autodoc


autodoc est une extension fondamentale pour Sphinx qui vous permet de créer des fichiers reStructuredText à partir du code source Python avec des signatures pour chaque classe, fonction, module, etc.

Pourquoi : documenter votre code ou votre API.
Lorsqu'il est utilisé : En fait, chaque fois que vous utilisez Sphinx.
Alternatives : résumé automatique

Test


py.test


py.test - à mon avis, est le meilleur package pour les tests en Python. Il a de nombreuses fonctions, bien que toutes ne soient pas ouvertes correctement, il faudra donc un certain temps pour rechercher toutes les possibilités offertes par py.test.

Pourquoi : tester votre code.
Lorsqu'il est utilisé : toujours lorsque vous êtes trop paresseux pour tester manuellement.
Alternatives : unittest, nez

Hypothèse


L'hypothèse est un outil pour tester des propriétés individuelles. En bref, il génère des scripts de test aléatoires selon vos spécifications jusqu'à ce qu'il trouve un scénario où le test échoue. Prenez le temps d'apprendre les principes avant de commencer à utiliser cet outil.

Pourquoi : test de code, en particulier traitement des données
Quand l'utiliser : lorsque vous devez tester une logique non triviale avec une large gamme de valeurs d'entrée (nombres, chaînes, données structurées).

tox


tox est un gestionnaire d'environnement virtuel pour les tests. Cela signifie que vous pouvez le configurer pour exécuter des tests dans des environnements virtuels propres et personnalisables pour vous assurer que votre code peut fonctionner dans diverses conditions.

Pourquoi : pour du code qui devrait s'exécuter dans diverses conditions et différents environnements. Également utile pour CI.
Quand l'utiliser : lorsque vous avez besoin que votre code soit pris en charge par différentes versions de Python, exécuté dans différents environnements et sur différents systèmes d'exploitation.
Alternatives : scripts bash, pipelines CI

Autres outils


pyenv


pyenv est le gestionnaire de versions de python. Il vise à simplifier le flux de travail local des développeurs lorsqu'ils travaillent avec plusieurs versions.

Pourquoi : lancer différents projets avec différentes versions de Python.
Lorsqu'il est utilisé : vous devez travailler avec des versions globales de Python et vous en avez beaucoup.
Alternatives : gestion manuelle, virtualenv, poésie, Pipenv

PyScaffold


PyScaffold est un outil permettant d'initialiser la structure d'un projet de manière standardisée et de fournir certains des outils répertoriés ci-dessus sans avoir à les configurer manuellement. Très flexible.

Pourquoi : pour charger des projets, travailler avec plusieurs projets avec les mêmes outils et structure.
Lorsqu'il est utilisé : toujours (si vous connaissez cet outil, mais n'essayez pas de l'utiliser pour la première fois lorsque vous êtes pressé)
Alternatives : python-project-template, Cookiecutter

flake8


flake8 est l'un des linters les plus populaires pour Python. Il exécute divers scripts pour vérifier que votre code correspond aux exigences du Guide de style Python ( PEP-8 ).

Pour quoi : vérifier votre projet pour un bon style d'écriture.
Lorsqu'il est utilisé : chaque fois que votre projet doit être lu par quelqu'un ou par vous.
Alternatives : pylint

Noir


Le noir formate automatiquement le code. Cela signifie qu'au lieu de simplement vérifier la conformité de votre code avec les normes, Black le modifiera indépendamment pour l'adapter.

Pourquoi : formatage automatique du code.
Lorsqu'il est utilisé : lorsque vous n'avez aucun problème à refuser de gérer manuellement votre code.
Alternatives : autopep8, yapf

C’est tout. En attente de vos commentaires ;-).

Source: https://habr.com/ru/post/fr456624/


All Articles