Comment utiliser les packages Python

Les packages Python vous permettent de décomposer des systèmes volumineux et d'organiser leurs modules de manière cohérente, que vous et d'autres personnes puissiez utiliser et réutiliser efficacement. La devise de Python: "Batteries incluses" signifie qu'elle est préchargée avec de nombreux paquets utiles dans la bibliothèque standard.. 

Mais il existe également de nombreux forfaits tiers incroyables dont vous pouvez tirer parti. Dans ce tutoriel, vous apprendrez tout ce que vous devez savoir sur les packages, comment importer des modules à partir de packages, explorer le package intégré à la bibliothèque standard de Python et installer des packages tiers..

Que sont les paquets?

Avant de pouvoir parler de paquets, parlons de modules. Les modules sont les fichiers sources avec l'extension * .py où vous (et tous les autres) mettez les fonctions et les classes qui composent votre programme. Les packages sont la manifestation du concept d'espaces de noms hiérarchiques de Python. Pour citer le zen de Python: 

"Les espaces de noms sont une bonne idée - faisons-en plus!"

Pour afficher l’ensemble du Zen de Python, tapez importer cette dans une session interactive Python:

importer ceci Le Zen de Python, par Tim Peters Belle est mieux que moche. Explicite est meilleur qu'implicite. Simple, c'est mieux que complexe. Complexe vaut mieux que compliqué. Flat est mieux que niché. Clairsemé est mieux que dense. La lisibilité compte. Les cas spéciaux ne sont pas assez spéciaux pour enfreindre les règles. Bien que la praticité bat la pureté. Les erreurs ne doivent jamais passer silencieusement. Sauf explicitement réduit au silence. Face à l'ambiguïté, refusez la tentation de deviner. Il devrait y avoir une - et de préférence une seule - manière évidente de le faire. Bien que cela ne soit pas évident au premier abord, sauf si vous êtes néerlandais. Maintenant, c'est mieux que jamais. Bien que ne soit jamais mieux que * droit * maintenant. Si la mise en œuvre est difficile à expliquer, c'est une mauvaise idée. Si la mise en œuvre est facile à expliquer, cela peut être une bonne idée. Les espaces de noms sont une idée géniale - faisons-en davantage!

Les espaces de noms aident à organiser le code et à prévenir les conflits de noms. Ceci est essentiel lorsque plusieurs personnes travaillent ensemble ou lors de l'utilisation de packages développés par d'autres personnes..

Alors que les packages représentent une hiérarchie de sous-packages et de modules, il s’agit de fichiers. La hiérarchie n’a pas à se baser sur le système de fichiers car les packages et les sous-packages sont des répertoires et des sous-répertoires. C'est beaucoup plus flexible que ça.

Exemple de forfait

Jetons un coup d'oeil à un paquet appelé "ansible". Ce n'est pas un paquet de la bibliothèque standard. Vous verrez plus tard comment trouver et installer des packages tiers. Maintenant, regardons la structure des fichiers de répertoires. 

Les paquetages seront généralement installés dans le répertoire site-packages de l'interpréteur Python, qui sera situé quelque part (en fonction de la version, du système d'exploitation et de la distribution) sous "lib". Sur Mac, pour Python 2.7, il sera situé dans "/lib/python2.7/site-packages ". Voici comment est organisé le paquet" ansible ":

arbre ansible -L 1 ansible __init__.py cli i compat config ├── constants.py erreurs ├── exécuteur ├── galaxie ├── inventaire ├── module_utils ├── modules analyse ├── playbook plugins ├── modèle utils └── vars 15 répertoires, 2 fichiers 

Il y a deux modules et 15 répertoires. Chaque répertoire est un sous-paquet du paquet principal ansible. En regardant à l'intérieur du répertoire ansible / utils, nous pouvons voir qu'il contient des modules supplémentaires et même un sous-paquet supplémentaire:

arbre ansible / utils -L 1 ansible / utils __init__.py boolean.py cmd_functions.py color.py debug.py display.py encrypt .py ├── hashing.py listify.py module_docs.py ├── module_docs_fragments chemin.py shlex.py unicode.py vars.py 1 répertoire , 14 fichiers

Le chemin de recherche

Lorsque vous importez un module, Python utilise un algorithme de recherche basé sur le chemin de recherche, qui est une liste de répertoires permettant de lancer la recherche. Le chemin de recherche est une liste de répertoires disponibles via sys.path, et vous pouvez le manipuler de manière dynamique (ajouter, supprimer ou déplacer des éléments dans le chemin de recherche). Le répertoire site-packages est toujours là.

Pour importer le module path.py depuis ansible / utils, vous devez utiliser la commande suivante:

importer ansible.utils.path

Si vous souhaitez également utiliser le module standard os.oath, vous utiliserez la commande suivante:

importer os.path

Maintenant, vous pouvez utiliser l’un ou les deux modules de chemin sans aucun conflit en raison de l’espace de noms de différence auquel ils appartiennent..

Explorer la bibliothèque standard

La bibliothèque standard a beaucoup de paquets. Cela vaut la peine de l'explorer chaque fois que vous avez besoin d'accomplir une tâche et que vous ne savez pas comment. Il est très probable que, pour toutes les tâches générales telles que les mathématiques, l'intégration de shell, l'intégration de système d'exploitation, la manipulation de chaînes, la mise en réseau et les formats de fichiers courants, la bibliothèque standard propose un package bien conçu, performant et bien testé.. 

Vous pouvez vraiment faire confiance aux packages de bibliothèque standard car il est très difficile d’entrer dans la bibliothèque standard. Soit le package a été conçu par les principaux développeurs de Python, soit il a été largement revu et souvent utilisé sur le terrain en tant que bibliothèque tierce avant d’être intégré à la bibliothèque standard..

Voici tous les paquets de la bibliothèque standard classés par sujet..

PyPI

La bibliothèque standard est géniale, mais vous aurez souvent besoin de fonctionnalités spéciales qui ne sont pas standard. Cela ne signifie pas que vous devez l'écrire à partir de zéro. Python a une communauté dynamique et active qui développe et partage librement beaucoup de code. Entrez PyPI - l'index du package Python. PyPI héberge tous les packages disponibles au public et fournit un guichet unique pour les parcourir..

Parcourir PyPI

PyPI organise les packages dans un index navigable. Vous pouvez parcourir et rechercher par sujet, environnement, framework, développement, statut, public visé, licence, langage naturel, langage de programmation (oui, il existe des packages Python prenant en charge de nombreux langages de programmation) et système d'exploitation.. 

Il existe également une distinction entre les packages Python 2 et Python 3, et vous pouvez constater la popularité d'un package en fonction du nombre de téléchargements récents. Par exemple, le paquet ansible est disponible sur PyPI et voici ses métadonnées:

Téléchargements (Toutes les versions): 5528 téléchargements le dernier jour 72037 téléchargements la semaine dernière 289967 téléchargements le mois dernier Auteur: Ansible, Inc. Page d'accueil: http://ansible.com/ Bug Tracker: http: // github. com / ansible / ansible / Licence: GPLv3 Catégories Statut de développement :: 5 - Production / Environnement stable :: Console Public cible :: Développeurs Public cible :: Technologies de l’information Public cible :: Licence d’administrateur système :: Approuvé par OSI :: Grand Public GNU Licence v3 ou ultérieure (GPLv3 +) Langage naturel :: Système d'exploitation anglais :: Langage de programmation POSIX :: Python :: 2.6 Langage de programmation :: Python :: 2.7 Sujet :: Système :: Installation / Configuration Sujet :: Système :: Administration des systèmes Sujet :: Utilitaires Index des paquets Propriétaire: James.Laska, jimi, ansible Index des paquets Mainteneur: mpdehaan, blaireau Enregistrement DOAP: ansible-2.0.0.2.xml 

Installation de packages

Il y a deux façons d'installer des paquets à partir de PyPI. Vous pouvez télécharger le package puis exécuter Installation de python.py. Mais la méthode moderne consiste à utiliser pip, setuptools et wheel. Pip signifie «Pip Installe des paquets» (oui, c'est l'un de ces acronymes) et constitue votre interface utilisateur pour l'installation. Si vous avez Python 2> = 2.7.9 ou Python 3> = 3.4 installé sur python.org, vous aurez déjà pip et setuptools, mais vous devrez mettre à niveau vers la dernière version: pip installer -U pip setuptools ou python -m pip install -U pip setuptools sous Windows.

Utilisez pip pour installer la roue: pip installer la roue.

Si vous utilisez une version antérieure de Python, envisagez une mise à niveau. Si vous ne le pouvez pas, vous devrez installer vous-même pip, setuptools et wheel. Vérifiez les instructions.

Les packages Python sont toujours installés dans un environnement. Une pratique courante que je ne couvrirai pas ici consiste à utiliser des environnements virtuels pour gérer plusieurs installations indépendantes de Python avec différents interprètes et / ou différents ensembles de packages installés..

Les meilleures pratiques

L'autorité d'emballage Python fournit de nombreuses indications sur les meilleures pratiques en matière d'emballage. C'est important car c'est un domaine de développement actif et les recommandations évoluent rapidement.

De plus, si vous souhaitez faire quelque chose de spécial, comme installer des paquets à partir de référentiels alternatifs au lieu de PyPI ou utiliser pip de manière plus sophistiquée, vous trouverez des discussions intéressantes et des conseils pratiques.. 

Conclusion

Lorsque vous débutez dans Python, vous apprenez la langue principale et vous amusez à la jouer. Très vite, vous découvrez la bibliothèque standard et, à mesure que vous gagnez en expérience, vous profitez de plus en plus de sa richesse.. 

La prochaine étape de votre évolution en tant que pythoniste consiste à incorporer la vaste génialité que la communauté Python a mise sur PyPI dans vos systèmes. Les packages en tant qu'unité de déploiement de code Python réutilisable permettent à cet écosystème.