Qu'est-ce que Pip? Un guide pour les nouveaux pythonistes – Real Python

By | avril 11, 2019

trouver un expert Python

Quel est pépin? pépin est le gestionnaire de paquets standard pour Python. Il vous permet d'installer et de gérer des packages supplémentaires qui ne font pas partie de la bibliothèque standard Python. Ce tutoriel est une introduction à pépin pour les nouveaux pythonistes.

Dans ce tutoriel, vous apprendrez:

  • Installation de paquets supplémentaires non inclus dans la distribution Python standard
  • Recherche de packages publiés dans Python Package Index (PyPI)
  • Gestion des exigences pour vos scripts et applications
  • Désinstallation des packages et de leurs dépendances

Comme vous le verrez, la communauté Python est très active et a créé d’excellentes alternatives au pépin que vous apprendrez plus tard dans ce tutoriel.

Débuter avec pépin

Alors, quel est pip? pépin est un gestionnaire de paquets pour Python. Cela signifie que c'est un outil qui vous permet d'installer et de gérer des bibliothèques et des dépendances supplémentaires qui ne sont pas distribuées dans le cadre de la bibliothèque standard.

La gestion des paquets est si importante que pépin est inclus dans le programme d’installation de Python depuis les versions 3.4 pour Python 3 et 2.7.9 pour Python 2, et il est utilisé par de nombreux projets Python, ce qui en fait un outil essentiel pour tout Pythonista.

Le concept de gestionnaire de paquets peut vous être familier si vous venez d'autres langues. JavaScript utilise npm pour la gestion des paquets, Ruby utilise gem, et .NET utilise NuGet. En python, pépin est devenu le gestionnaire de paquets standard.

Le programme d'installation de Python installe pépinIl devrait donc être prêt à être utilisé, à moins d’installer une ancienne version de Python. Vous pouvez vérifier cela pépin est disponible en exécutant la commande suivante dans votre console:

$ pip --version

pip 18.1 à partir de C:  Python37  lib  site-packages  pip (python 3.7)

Vous devriez voir une sortie similaire affichant le pépin version, ainsi que l'emplacement et la version de Python. Si vous utilisez une ancienne version de Python qui n'inclut pas pépin, vous pouvez l’installer en suivant les instructions de votre système dans le pépin documentation d'installation.

Vous voudrez probablement suivre les exemples de ce tutoriel dans un environnement virtuel pour éviter d'installer des packages dans l'installation globale de Python. Vous pouvez en apprendre davantage sur les environnements virtuels dans Python Virtual Environments: A Primer. La section Utilisation d'environnements virtuels de cet article explique les bases de la création de nouveaux environnements virtuels.

Installer des paquets avec pépin

Python est considéré comme un langage incluant les piles. Cela signifie que la bibliothèque standard Python comprend un ensemble complet de packages et de modules destinés à aider les développeurs avec leurs scripts et leurs applications.

Dans le même temps, Python possède une communauté très active qui contribue à un ensemble encore plus important de packages pouvant vous aider à répondre à vos besoins de développement. Ces packages sont publiés dans Python Package Index, également connu sous le nom de PyPI (prononcé). Pie Pea Eye). PyPI héberge une vaste collection de packages comprenant des frameworks de développement, des outils et des bibliothèques.

Bon nombre de ces packages simplifient le développement Python en fournissant des interfaces conviviales aux fonctionnalités déjà existantes dans la bibliothèque standard. Par exemple, vous pouvez écrire un script qui extrait le contenu d'une page Web en utilisant uniquement les bibliothèques standard incluses avec Python:

# En utilisant-http.py

importation cgi
importation http.client

serveur = "www.google.com"
url = '/'
Connecticut = http.client.HTTPSConnection(serveur)
Connecticut.demande('OBTENIR', url)
réponse = Connecticut.avoir une réponse()
type_contenu = réponse.en-têtes.obtenir('Content-Type')
_, params = cgi.parse_header(type_contenu)
codage = params.obtenir('charset')
Les données = réponse.lis()
texte = Les données.décoder(codage)

impression(F'Réponse renvoyée: response.status    (response.reason) ')
impression('Corps:')
impression(texte)

Dans ce script, vous importez cgi et http.client, les deux étant inclus dans la bibliothèque standard Python. Vous créez un HTTPSConnection objet spécifiant le serveur et invoque sa .demande() et .avoir une réponse() pour récupérer une réponse.

À partir de la réponse, vous pouvez récupérer le Type de contenu en-tête et analyser en utilisant le cgi module pour extraire le jeu de caractères dans lequel la page est codée.

cgi.parse_header () renvoie un tuple avec une valeur principale et un dictionnaire de paramètres. Par exemple, le Type de contenu en-tête pourrait contenir une valeur comme text / html; jeu de caractères = ISO-8859-1.

Le tuple contiendra la chaîne texte / html comme premier élément, et le deuxième élément sera un dictionnaire sous la forme 'charset': 'ISO-8859-1'. Parce que vous ne vous souciez que de jeu de caractères paramètre, vous pouvez ignorer le début du tuple en utilisant un trait de soulignement: _, params = cgi.parse_header (type de contenu).

Une fois que vous avez l'encodage de la page, vous pouvez lire la réponse et la décoder en texte. Vous pouvez exécuter l'exemple dans la console pour voir comment cela fonctionne:

$ python using-http.py

Réponse renvoyée: 200 (OK)
Corps:
<html itemscope = "" itemtype = "http://schema.org/WebPage" 
lang = "en"><meta content = "Recherchez des informations dans le monde, y compris 
pages Web, images, vidéos et plus. Google dispose de nombreuses fonctionnalités spéciales pour vous aider 
trouvez exactement ce que vous cherchez. "name =" description "> <meta content =" noodp " 
name = "robots"> ... Sortie supplémentaire omise

Cela ressemble à beaucoup de travail pour un petit script qui récupère le contenu d'une page Web. Heureusement, il existe un paquet Python qui simplifie les requêtes HTTP et fournit une interface agréable pour faire exactement ce que vous voulez.

Installation de paquet de base

PyPI héberge une bibliothèque très populaire pour effectuer des requêtes HTTP appelée demandes. Vous pouvez tout apprendre à ce sujet sur son site de documentation officiel.

La première étape consiste à installer le demandes package dans votre environnement. Vous pouvez en apprendre davantage sur pépin commandes prises en charge en l'exécutant avec Aidez-moi:

$ pépin Aidez-moi

Usage:
        pépin  [options]

Commandes:
        installer Installer les packages.
        download Télécharger les packages.
        désinstaller Désinstaller des packages.
        freeze Affiche les packages installés au format des exigences.
        list Liste les paquets installés.
        show Affiche des informations sur les packages installés.
        cocher Vérifier que les paquets installés sont compatibles 
                                                                                                                        dépendances.
        config Gère la configuration locale et globale.
        search Recherche PyPI pour les paquets.
        roue Construisez des roues à partir de vos exigences.
        hash Calcule le hachage des archives de paquets.
        achèvement Une commande d'assistance utilisée pour l'achèvement de la commande.
        help Afficher l'aide pour les commandes.

Options générales:
        -h, --help Afficher l'aide.
        --isolated Exécuter pip en mode isolé, en ignorant l'environnement 
                                                                                                                        variables et configuration utilisateur.
        -v, --verbose Donne plus de sortie. L'option est additive et peut être 
                                                                                                                        utilisé jusqu'à 3 fois.
        -V, --version Affiche la version et quitte.
        -q, --quiet Donne moins de sortie. L'option est additive et peut être 
                                                                                                                        utilisé jusqu'à 3 fois (correspondant à WARNING, 
                                                                                                                        ERROR, et CRITICAL niveaux d'enregistrement).
        --bûche                 Chemin vers un journal d’ajout détaillé.
        --Procuration              Spécifiez un proxy dans le formulaire 
                              [user:passwd@]proxy.server: port.
        --retries          Nombre maximal de tentatives que chaque connexion doit 
                                                                                                                        tentative (5 fois par défaut).
        --temps libre              Définissez le délai d'attente du socket (15 secondes par défaut).
        --exists-action     Action par défaut lorsqu'un chemin existe déjà: 
                                                                                                                        (s) sorcière, (i) gnore, (w) ipe, (b) ackup, (a) bort).
        - hôte de confiance    Marquer cet hôte comme digne de confiance, même s'il le fait 
                                                                                                                        pas valide ou aucun HTTPS.
        --cert                Chemin d'accès au lot d'AC alternatif.
        --client-cert         Chemin d'accès au certificat client SSL, un seul fichier 
                                                                                                                        contenant la clé privée et le certificat dans 
                                                                                                                        Format PEM.
        --cache-dir            Stocker les données de cache dans .
        --no-cache-dir Désactive le cache.
        --disable-pip-version-check
                                                                                                                        Ne vérifiez pas périodiquement PyPI pour déterminer 
                                                                                                                        si une nouvelle version de pip est disponible pour 
                                                                                                                        Télécharger. Impliqué avec --no-index.

Comme vous pouvez le voir, pépin fournit un installer commande pour installer des paquets. Vous pouvez le lancer pour installer le demandes paquet:

$ demandes d'installation de pip

Recherche dans les index: https://pypi.org/simple
Collecte des demandes
        Utilisation en cache 
        https://files.pythonhosted.org/packages/7d/e3/
        20f3d364d6c8e5d2353c72a67778eb189176f08e873c9900e10c0287b84b /
        request-2.21.0-py2.py3-none-any.whl
Collection de chardet<3.1.0,>= 3.0.2 (à partir de demandes)
        Utilisation de https://files.pythonhosted.org/packages/bc/a9/ en cache
        01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8 /
        chardet-3.0.4-py2.py3-none-any.whl
Collecte d'idna<2.9,>= 2.5 (à partir de demandes)
        Utilisation de la https://files.pythonhosted.org/packages/14/2c/ en cache
        cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9 /
        idna-2.8-py2.py3-none-any.whl
Collecte d'urllib3<1.25,>= 1.21.1 (à partir de demandes)
        Utilisation de la mise en cache https://files.pythonhosted.org/packages/62/00/
        ee1d7de624db8ba7090d1226aebefab96a2c71cd5cfa7629d6ad3f61b79e /
        urllib3-1.24.1-py2.py3-none-any.whl
Collecting certifi> = 2017.4.17 (à partir de demandes)
        Utilisation de https://files.pythonhosted.org/packages/9f/e0/ en cache
        accfc1b56b57e9750eba272e24c4dddeac86852c2bebd1236674d7887e8a /
        certifi-2018.11.29-py2.py3-none-any.whl
Installation des paquets collectés: chardet, idna, urllib3, certifi, demandes
Certifi-2018.11.29 installé avec succès chardet-3.0.4 idna-2.8 
        demandes-2.21.0 urllib3-1.24.1
Vous utilisez la version pip 18.1, mais la version 19.0.1 est disponible.
Vous devriez envisager de mettre à niveau via 'python -m pip install --upgrade pip' 
        commander.

Vous devriez voir une sortie similaire à celle ci-dessus. Tu utilises pépin avec un installer suivi du nom du paquet que vous voulez installer. pépin cherche le paquet dans PyPI, calcule ses dépendances et les installe pour s’assurer demandes marchera.

Vous pouvez également voir que l'environnement actuel utilise pépin version 18.1, mais version 19.0.1 est disponible. Il montre également la commande que vous devez utiliser pour mettre à jour pépinalors faisons ceci:

$ python -m pip install --upgrade pip

Recherche dans les index: https://pypi.org/simple
Pipe de collecte
        Téléchargement de https://files.pythonhosted.org/packages/46/dc/
        7fd5df840efb3e56c8b4f768793a237ec4ee59891959d6a215d63f727023 /
        pip-19.0.1-py2.py3-none-any.whl (1,4 Mo)
                100% | ████████████████████████████████ | 1,4 Mo 2,0 Mo / s
Installation des paquets collectés: pip
        Installation existante trouvée: pip 18.1
                Désinstallation du pip-18.1:
                        Pip-18.1 désinstallé avec succès
Pip-19.0.1 installé avec succès

Notez que vous utilisez python -m mettre à jour pépin. le -m switch dit à Python d’exécuter un module en tant qu’exécutable. Cela est nécessaire car pour que vous puissiez mettre à jour pépin, l'ancienne version doit être désinstallée avant d'installer la nouvelle version, et sa suppression lors de l'exécution de l'outil peut provoquer des erreurs.

Quand tu cours pépin en tant que module, Python charge le module en mémoire et permet de supprimer le package pendant son utilisation. Vous pouvez exécuter des packages comme s'il s'agissait de scripts s'il fournit un script de niveau supérieur. __main__.py.

Maintenant que vous avez installé demandes et mis à niveau pépin, vous pouvez utiliser le liste commande pour voir les paquets installés dans votre environnement:

$ liste de pip

Version du package
---------- ----------
certifi 2018.11.29
chardet 3.0.4
idna 2.8
pip 19.0.1
demandes 2.21.0
setuptools 40.6.2
urllib3 1.24.1

Comme vous pouvez le voir, pépin a été mis à niveau vers la version 19.0.1 (la dernière version en ce moment), et demandes version 2.21.0 a été installé.

le pip installer commande cherche toujours la dernière version du paquet et l’installe. Il recherche également les dépendances répertoriées dans les métadonnées du package et les installe pour s'assurer que le package a toutes les exigences requises.

Comme vous pouvez le constater, plusieurs packages ont été installés. Vous pouvez consulter les métadonnées du paquet en utilisant le spectacle commande en pépin:

$ demandes de pips

Nom: demandes
Version: 2.21.0
Résumé: HTTP Python pour les humains.
Page d'accueil: http://python-requests.org
Auteur: Kenneth Reitz
Auteur-email: me@kennethreitz.org
Licence: Apache 2.0
Lieu: py37  lib  site-packages
Nécessite: certifi, chardet, idna, urllib3
Requis par:

Les listes de métadonnées certifi, chardet, idna, et urllib3 en tant que dépendances, et vous pouvez voir qu'elles ont également été installées.

Avec le demandes package installé, vous pouvez modifier l’exemple ci-dessus et constater à quel point il est facile de récupérer le contenu d’une page Web:

# Dans using-requests.py

importation demandes

url = "https://www.google.com"
réponse = demandes.obtenir(url)
impression(F'Réponse renvoyée: code de réponse.état, response.reason')
impression(réponse.texte)

Vous pouvez importer le demandes package comme tout autre package standard car il est maintenant installé dans votre environnement.

Comme vous pouvez le voir, requests.get () gère la connexion HTTP pour vous et renvoie un objet de réponse similaire à l'exemple d'origine, mais avec quelques améliorations de l'interface.

Vous n’avez pas à vous occuper de l’encodage de la page car demandes se chargera de cela pour vous dans la plupart des situations. Encore, demandes fournit une interface flexible pour traiter les cas spéciaux à travers le demandes.réponse objet.

Utilisation des fichiers d'exigences

le pip installer Cette commande installe toujours la dernière version publiée d’un package, mais vous pouvez parfois souhaiter installer une version spécifique qui fonctionne avec votre code.

Vous souhaitez créer une spécification des dépendances et des versions que vous avez utilisées pour développer et tester votre application. Il n'y a donc pas de surprises lorsque vous utilisez l'application en production.

Les fichiers de conditions requises vous permettent de spécifier exactement les packages et les versions à installer. Fonctionnement aide pip montre qu'il y a un gel commande qui affiche les packages installés au format d'exigences. Vous pouvez utiliser cette commande pour rediriger la sortie vers un fichier afin de générer un fichier de configuration requise:

$ pip gel> exigences.txt
$ chat exigences.txt

certifi == 2018.11.29
chardet == 3.0.4
idna == 2,8
requêtes == 2.21.0
urllib3 == 1.24.1

le gel La commande dump tous les packages et leurs versions vers la sortie standard. Vous pouvez ainsi rediriger la sortie vers un fichier pouvant être utilisé pour installer les exigences exactes dans un autre système. La convention est de nommer ce fichier conditions.txt, mais vous pouvez lui donner le nom de votre choix.

Lorsque vous souhaitez répliquer l’environnement sur un autre système, vous pouvez exécuter pip installer en spécifiant le fichier d'exigences à l'aide du -r commutateur:

$ pip install -r Requirements.txt

Recherche dans les index: https://pypi.org/simple
Collecte de certifi == 2018.11.29 (à partir de -r.  Requirements.txt (ligne 1))
        Utilisation de https://files.pythonhosted.org/packages/9f/e0/ en cache
        accfc1b56b57e9750eba272e24c4dddeac86852c2bebd1236674d7887e8a /
        certifi-2018.11.29-py2.py3-none-any.whl
Collecter chardet == 3.0.4 (à partir de -r.  Requirements.txt (ligne 2))
        Utilisation de https://files.pythonhosted.org/packages/bc/a9/ en cache
        01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8 /
        chardet-3.0.4-py2.py3-none-any.whl
Collecte d'idna == 2.8 (à partir de -r.  Requirements.txt (ligne 3))
        Utilisation de la https://files.pythonhosted.org/packages/14/2c/ en cache
        cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9 /
        idna-2.8-py2.py3-none-any.whl
Collecte des demandes == 2.21.0 (à partir de -r.  Requirements.txt (ligne 4))
        Utilisation de https://files.pythonhosted.org/packages/7d/e3/ en cache
        20f3d364d6c8e5d2353c72a67778eb189176f08e873c9900e10c0287b84b /
        request-2.21.0-py2.py3-none-any.whl
Collecte de urllib3 == 1.24.1 (à partir de -r.  Requirements.txt (ligne 5))
        Utilisation de la mise en cache https://files.pythonhosted.org/packages/62/00/
        ee1d7de624db8ba7090d1226aebefab96a2c71cd5cfa7629d6ad3f61b79e /
        urllib3-1.24.1-py2.py3-none-any.whl
Installation des paquets collectés: certifi, chardet, idna, urllib3, requêtes
Certifi-2018.11.29 installé avec succès chardet-3.0.4 idna-2.8 
        demandes-2.21.0 urllib3-1.24.1

Les versions des packages correspondront à celles listées dans conditions.txt:

$ liste de pip

Version du package
---------- ----------
certifi 2018.11.29
chardet 3.0.4
idna 2.8
pip 19.0.1
demandes 2.21.0
setuptools 40.6.2
urllib3 1.24.1

Vous pouvez soumettre le conditions.txt fichier dans le contrôle de source et utilisez-le pour créer l'environnement exact dans d'autres machines.

Exigences de réglage

Le problème avec Codage dur Selon les versions de vos packages et leurs dépendances, les packages sont mis à jour fréquemment avec des correctifs de bogues et de sécurité, et vous souhaiterez probablement les exploiter dès leur publication.

Le format de fichier des exigences vous permet de spécifier des versions de dépendance à l'aide d'opérateurs logiques, ce qui vous donne un peu de flexibilité pour vous assurer que les packages sont mis à jour, tout en définissant les versions de base d'un package.

Ouvrez le conditions.txt fichier dans votre éditeur favori et apportez les modifications suivantes:

certifi> =2018.11.29
chardet> =3.0.4
idna> =2.8
demandes> =2,21.0
urllib3> =1,24.1

Vous pouvez changer l'opérateur logique en > = dire pépin pour installer une version exacte ou une version supérieure publiée. Lorsque vous définissez un nouvel environnement à l'aide du requirments.txt fichier, pépin cherche la dernière version qui satisfait à l'exigence et l'installe. Vous pouvez mettre à niveau les packages de votre fichier de configuration en exécutant la commande installer commande avec le --améliorer commutateur:

$ installation de pip --upgrade -r Requirements.txt

Recherche dans les index: https://pypi.org/simple
Prérequis déjà mis à jour: certifi == 2018.11.29 dans  py37  lib  site-packages 
        (à partir de -r.  exigences.txt (ligne 1)) (2018.11.29)
Prérequis déjà mis à jour: chardet == 3.0.4 dans  py37  lib  site-packages 
        (à partir de -r.  exigences.txt (ligne 2)) (3.0.4)
Prérequis déjà mis à jour: idna == 2.8 dans  py37  lib  site-packages 
        (à partir de -r.  exigences.txt (ligne 3)) (2.8)
Prérequis déjà à jour: demandes == 2.21.0 dans  py37  lib  site-packages 
        (à partir de -r.  exigences.txt (ligne 4)) (2.21.0)
Exigence déjà à jour: urllib3 == 1.24.1 dans  py37  lib  site-packages 
        (à partir de -r.  exigences.txt (ligne 5)) (1.24.1)

Aucune mise à niveau n'a été effectuée car vous disposez des versions les plus récentes, mais si une nouvelle version était publiée pour un package répertorié, celui-ci aurait été mis à niveau.

Dans un monde idéal, les nouvelles versions de paquets seraient rétro-compatibles et n'introduiraient jamais de nouveaux bogues. Malheureusement, les nouvelles versions peuvent introduire des modifications qui vont casser votre application. La syntaxe du fichier de spécifications prend en charge des spécificateurs de version supplémentaires pour affiner vos exigences.

Disons qu’une nouvelle version 3.0 de demandes est publié mais introduit une modification incompatible qui casse votre application. Vous pouvez modifier le fichier de configuration pour empêcher 3.0 ou supérieur d'être installé:

certifi> =2018.11.29
chardet> =3.0.4
idna> =2.8
demandes> =2,21.0, <3.0
urllib3> =1,24.1

Changer le spécificateur de version pour le demandes paquet assure que toute version supérieure ou égale à 3.0 ne soit pas installé. le pépin La documentation fournit toutes les informations sur le format de fichier des exigences. Vous pouvez la consulter pour en savoir plus.

Dépendances de production et de développement

Tous les packages que vous installez lors du développement de vos applications ne seront pas nécessairement des dépendances d'applications. PyPI contient de nombreux packages qui sont des outils de développement ou des bibliothèques que vous souhaitez exploiter au cours du processus de développement.

Par exemple, vous souhaiterez probablement tester votre application par unité, vous avez donc besoin d’un framework de test unitaire. Un framework populaire pour les tests unitaires est pytest. Vous souhaitez l'installer dans votre environnement de développement, mais pas dans votre environnement de production car ce n'est pas une dépendance d'application.

Vous créez un deuxième fichier de conditions requises (exigences_dev.txt) pour lister des outils supplémentaires pour configurer un environnement de développement:

# Dans Requirements_dev.txt
pytest> =4.2.0

Cela vous oblige à utiliser pépin installer les deux fichiers d’exigence: conditions.txt et exigences_dev.txt. Heureusement, pip vous permet de spécifier des paramètres supplémentaires dans un fichier de configuration. Vous pouvez modifier exigences_dev.txt installer également les exigences de la production conditions.txt fichier:

# Dans Requirements_dev.txt
-r exigences.SMS
pytest> =4.2.0

Notez que vous utilisez exactement le même -r passer pour installer la production conditions.txt fichier. Le format du fichier de spécifications vous permet de spécifier des arguments supplémentaires directement dans un fichier de spécifications.

Conditions de congélation pour la production

Vous avez créé les fichiers de besoins de production et de développement et les avez ajoutés au contrôle de source. Les fichiers utilisent des spécificateurs de version flexibles pour garantir que vous exploitez les correctifs de bogues publiés par vos dépendances. Vous testez également votre application et vous êtes prêt à la déployer en production.

Vous voulez probablement vous assurer que les versions des dépendances que vous déployez en production sont exactement les mêmes que celles que vous avez utilisées dans votre processus d'intégration ou de processus de construction, car vous savez que tous les tests ont réussi et que l'application fonctionne.

Les spécificateurs de version actuels ne garantissent pas que les mêmes versions seront déployées en production. Vous souhaitez donc figer les exigences de production telles que décrites précédemment.

Vous créez un environnement virtuel de production propre et installez les conditions de production à l'aide du conditions.txt fichier. Une fois les exigences installées, vous pouvez geler les versions spécifiques en vidant la sortie dans un fichier. exigences_lock.txt fichier que vous utilisez en production. le exigences_lock.txt Le fichier contient les spécificateurs de version exacts et peut être utilisé pour répliquer l'environnement.

Trouver des paquets à utiliser

Au fur et à mesure que vous devenez un expert Pythonista, vous découvrirez un ensemble de packages que vous connaîtrez par cœur et que vous utiliserez dans la plupart de vos applications. le demandes et pytest Les paquetages sont de bons candidats pour devenir des outils utiles dans votre boîte à outils Python.

Il y aura des moments où vous devrez résoudre un problème différent, et vous voudrez rechercher un outil ou une bibliothèque différent qui puisse vous aider. Comme vous pouvez le voir ci-dessus, aide pip montre qu'il y a un chercher commande qui recherche les paquets publiés dans PyPI.

Voyons comment cette commande peut nous aider:

$ pépin Aidez-moi chercher

Usage:
        recherche de pip [options] 

La description:
        Rechercher les paquets PyPI dont le nom ou le résumé contient .

Options de recherche:
        -i, --index            URL de base de l'index de package Python 
                                                                                                                        (https://pypi.org/pypi par défaut)

Options générales:
        -h, --help Afficher l'aide.
        --isolated Exécuter pip en mode isolé, en ignorant l'environnement 
                                                                                                                        variables et configuration utilisateur.
        -v, --verbose Donne plus de sortie. L'option est additive et peut être 
                                                                                                                        utilisé jusqu'à 3 fois.
        -V, --version Affiche la version et quitte.
        -q, --quiet Donne moins de sortie. L'option est additive et peut être 
                                                                                                                        utilisé jusqu'à 3 fois (correspondant à WARNING, 
                                                                                                                        ERROR, et CRITICAL niveaux d'enregistrement).
        --bûche                 Chemin vers un journal d’ajout détaillé.
        --Procuration              Spécifiez un proxy dans le formulaire 
                              [user:passwd@]proxy.server: port.
        --retries          Nombre maximal de tentatives que chaque connexion doit 
                                                                                                                        tentative (5 fois par défaut).
        --temps libre              Définissez le délai d'attente du socket (15 secondes par défaut).
        --exists-action     Action par défaut lorsqu'un chemin existe déjà: 
                                                                                                                        (s) sorcière, (i) gnore, (w) ipe, (b) ackup, (a) bort).
        - hôte de confiance    Marquer cet hôte comme digne de confiance, même s'il le fait 
                                                                                                                        pas valide ou aucun HTTPS.
        --cert                Chemin d'accès au lot d'AC alternatif.
        --client-cert         Chemin d'accès au certificat client SSL, un seul fichier 
                                                                                                                        contenant la clé privée et le certificat dans 
                                                                                                                        Format PEM.
        --cache-dir            Stocker les données de cache dans .
        --no-cache-dir Désactive le cache.
        --disable-pip-version-check
                                                                                                                        Ne vérifiez pas périodiquement PyPI pour déterminer 
                                                                                                                        si une nouvelle version de pip est disponible pour 
                                                                                                                        Télécharger. Impliqué avec --no-index.
        --no-color Supprimer la sortie couleur

La commande prend un ensemble d’options répertoriées ci-dessus et une . La requête est juste une chaîne à rechercher et correspondra aux packages et à leurs descriptions.

Supposons que votre application ait besoin d'accéder à un service utilisant OAuth2 pour une autorisation. Idéalement, il y a une bibliothèque qui fonctionne avec demandes ou avec une interface similaire qui peut nous aider. Cherchons PyPI pour cela en utilisant pépin:

$ demandes de recherche de pipeau oauth

request-oauth (0.4.1) - Crochet pour ajouter une authentification ouverte 
                                                                                                                                                    support de la bibliothèque HTTP Python-request.
oauth (1.0.1) - Bibliothèque pour OAuth version 1.0a.
pmr2.oauth (0.6.1) - Plugin OAuth PAS, fournisseur OAuth 1.0 pour 
                                                                                                                                                    Plone.
oauth-proxy (1.0.5) - Proxy HTTP OAuth
django-oauth (1.1) - Support d'OAuth dans Django.
intuit-oauth (1.2.0) - Client Intuit OAuth
brubeck-oauth (0.1.11) - Module Brubeck OAuth
guillotina-oauth (2.0.0) - soutien guillotina oauth
httpie-oauth (1.0.2) - plug-in OAuth pour HTTPie.
paytm-oauth (0.2) - Consommateur pour paytm oauth
plurk-oauth (0.9.2) - API Plurk OAuth
oauth-flow (1.0.3) - Authentifie et appelle OAuth 1.0, 
                                                                                                                                                    Services OAuth 2.0
... Sortie supplémentaire omise

Le terme de recherche donne une collection assez étendue de paquets. Certains d’entre eux semblent spécifiques à un service ou à une technologie comme Django-oauth. D'autres semblent prometteurs, comme demandes-oauth. Malheureusement, il n’ya pas beaucoup d’informations autres qu’une brève description.

La plupart du temps, vous souhaitez rechercher des packages directement sur le site Web de PyPI. PyPI fournit des fonctionnalités de recherche pour son index et un moyen de filtrer les résultats en fonction des métadonnées exposées dans le package, telles que la structure, la rubrique, l'état de développement, etc.

Une recherche des mêmes termes dans PyPI donne beaucoup de résultats, mais vous pouvez les filtrer par catégories. Par exemple, vous pouvez développer la Public visé et sélectionnez Développeurs puisque vous voulez une bibliothèque qui vous aide à développer votre application. En outre, vous souhaiterez probablement un package stable et prêt pour la production. Vous pouvez élargir le Statut de développement catégorie et sélectionnez Production / Stable:

Résultats de recherche PyPi pour Requests OAuth

Vous pouvez appliquer des filtres supplémentaires et affiner les termes de recherche jusqu'à ce que vous trouviez le package que vous recherchez.

Les résultats fournissent un lien vers la page du paquet, qui contient plus d'informations et, espérons-le, de la documentation. Jetons un coup d’oeil aux informations pour demandes-oauth2:

PyPi Package Page pour les requêtes OAuth 2

La page du projet fournit plus d'informations et semble contenir un lien vers la page d'accueil du projet. Le lien vous mène au référentiel de projet sur GitHub. Là, vous pouvez voir plus d’informations sur le projet et quelques exemples d’utilisation.

La recherche du référentiel de code source original peut être une ressource inestimable. Vous y trouverez des indications sur l'état du projet en consultant la date des derniers commits, le nombre de demandes d'extraction, les problèmes en suspens, etc.

Une autre option pour trouver un package est de le rechercher sur Google. Les bibliothèques Python les plus utilisées apparaîtront en haut des recherches Google. Vous devriez pouvoir trouver un lien vers le paquet dans PyPI ou son référentiel de code source.

Trouver le bon package peut prendre du temps et des recherches, mais cela accélérera également votre processus de développement une fois que vous l'avez trouvé.

Désinstallation des packages

De temps en temps, vous devrez désinstaller un paquet. Vous avez soit trouvé une meilleure bibliothèque pour la remplacer, soit vous n’avez pas vraiment besoin de cette bibliothèque. La désinstallation de paquets peut être un peu délicate.

Notez que, lorsque vous avez installé demandes, pépin installé d'autres dépendances aussi. Plus vous installez de packages, plus il est probable que plusieurs packages dépendent de la même dépendance. C'est là que le spectacle commande en pépin est très pratique.

Avant de désinstaller un paquet, assurez-vous d’exécuter le spectacle commande pour ce paquet:

$ demandes de pips

Nom: demandes
Version: 2.21.0
Résumé: HTTP Python pour les humains.
Page d'accueil: http://python-requests.org
Auteur: Kenneth Reitz
Auteur-email: me@kennethreitz.org
Licence: Apache 2.0
Emplacement: c:  users  isaac  projects  virtualenv  py37  lib  site-packages
Requiert: urllib3, certifi, chardet, idna
Requis par:

Remarquez les deux derniers champs A besoin et Requis par. le spectacle la commande nous dit que demandes a besoin urllib3, certifi, chardet, et idna. Vous voulez probablement désinstaller ces deux. Vous pouvez aussi voir que demandes n’est requis par aucun autre paquet, vous pouvez donc le désinstaller en toute sécurité.

Vous devriez lancer le spectacle commande contre tous les demandes dépendances pour s’assurer qu’aucune autre bibliothèque n’en dépend également. Une fois que vous avez compris l’ordre de dépendance des packages à désinstaller, vous pouvez les supprimer à l’aide de la désinstaller commander:

$ pip désinstaller certifi

Désinstallation de certifi-2018.11.29:
        Enlèverait:
                 py37  lib  site-packages  certifi-2018.11.29.dist-info  *
                 py37  lib  site-packages  certifi  *
Continuer (y / n)? y
        Certifi-2018.11.29 désinstallé avec succès

La désinstallation d'un paquet vous montre les fichiers qui seront supprimés et vous demandera une confirmation. Si vous êtes certain de vouloir supprimer le package car vous avez vérifié ses dépendances et vous savez que rien ne l’utilise, vous pouvez transmettre un message. -y passer à supprimer la liste de fichiers et confirmation:

$ désinstaller pip urllib3 -y

Désinstallation de urllib3-1.24.1:
        Urllib3-1.24.1 désinstallé avec succès

$ pip désinstaller chardet -y

Désinstallation de chardet-3.0.4:
        Chardet-3.0.4 a été désinstallé avec succès

$ pip désinstaller idna -y

Désinstallation de idna-2.8:
        Idna-2.8 désinstallé avec succès

$ demandes de désinstallation de pip -y

Désinstallation de request-2.21.0:
        Requêtes-2.21.0 désinstallées avec succès

Vous pouvez spécifier tous les packages que vous souhaitez désinstaller en un seul appel: désinstaller le pip -y urllib3 chardet requêtes idna.

Vous pouvez également désinstaller tous les packages répertoriés dans un fichier de configuration en fournissant le -r option. La commande demandera une confirmation pour chaque paquet individuel, mais vous pouvez le supprimer, si vous savez ce que vous faites, avec la commande -y commutateur:

$ pip désinstaller -r Requirements.txt -y

Désinstallation de certifi-2018.11.29:
        Certifi-2018.11.29 désinstallé avec succès
Désinstallation de chardet-3.0.4:
        Chardet-3.0.4 a été désinstallé avec succès
Désinstallation de idna-2.8:
        Idna-2.8 désinstallé avec succès
Désinstallation de request-2.21.0:
        Requêtes-2.21.0 désinstallées avec succès
Désinstallation de urllib3-1.24.1:
        Urllib3-1.24.1 désinstallé avec succès

N'oubliez pas de toujours vérifier les dépendances des packages que vous souhaitez désinstaller. Vous voudrez probablement désinstaller toutes ses dépendances, mais désinstaller un paquet utilisé par d'autres cassera votre application.

Alternatives à pépin

pépin est un outil essentiel pour tous les pythonistes et il est utilisé par de nombreuses applications et projets pour la gestion des paquets. Ce tutoriel vous a aidé avec les bases, mais la communauté Python est très active dans la fourniture d’excellents outils et bibliothèques pour que les autres développeurs puissent les utiliser. Celles-ci incluent d'autres alternatives à pépin qui tentent de simplifier et d’améliorer la gestion des paquets.

Dans cette section, vous découvrirez d’autres outils de gestion de paquets disponibles pour Python.

Conda fait tout

Conda est un gestionnaire de paquetages, de dépendances et d’environnement pour de nombreux langages, y compris Python. En fait, son origine provient d'Anaconda, qui a commencé comme un progiciel de science de données pour Python.

Conda est largement utilisé pour la science des données et les applications d’apprentissage automatique. Il utilise son propre index pour héberger des packages compatibles.

Conda vous permet non seulement de gérer les dépendances de package, mais également les environnements virtuels de vos applications, installe des distributions Python compatibles et met en package votre application en vue de son déploiement en production.

La configuration de Python pour l'apprentissage automatique sur Windows est une excellente introduction à Conda qui explore la gestion des packages et de l'environnement. Les seules informations spécifiques à Windows concernent l’installation. C’est donc toujours pertinent si vous utilisez une plate-forme de système d’exploitation différente.

Pipenv

Pipenv est un autre outil de gestion de paquets qui «vise à apporter le meilleur de tous les mondes de l’emballage» à Python. La communauté Python gagne en popularité, car elle fusionne l’environnement virtuel et la gestion des packages dans un seul outil.

Il résout également certains des problèmes les plus courants que vous rencontrerez lors de la gestion manuelle des dépendances via pépin, comme les versions de packages, séparant les dépendances de développement et de production et verrouillant les versions pour la production.

Pipenv: Un guide du nouvel outil d’empaquetage Python est un bon début pour en apprendre davantage sur Pipenv et son approche de la gestion des paquets. Même si l'article est marqué comme intermédiaire, l’auteur fait un excellent travail pour indiquer au lecteur que cet article est accessible à toute personne commençant par Python.

Poésie

La poésie est un autre pépin alternative qui gagne beaucoup de traction. Comme Pipenv, il simplifie la gestion des versions de paquetages et sépare les dépendances entre développement et production, et fonctionne en isolant ces dépendances dans un environnement virtuel.

Si vous venez de JavaScript et npm, alors Poetry vous semblera très familier. It goes beyond package management, helping you build distributions for your applications and libraries and deploying them to PyPI. How to Publish an Open-Source Python Package to PyPI has a good introduction to Poetry and can help you get started.

Conclusion: What Is pépin?

This tutorial answered the question, what is pip? You’ve seen that pépin is a package manager for Python, used by many projects to manage dependencies. It’s included with the Python installer, which makes it an essential tool for all Pythonistas to know how to use.

Python provides an extensive standard library suitable for developing all sorts of applications, but the active Python community provides an even larger set of tools and libraries that speed up Python application development.

These tools and libraries are published to the Python Package Index (PyPI), and pépin allows developers to install them in their application environments.

In this tutorial, you’ve learned about:

  • Installing new packages using pépin in the command line and with requirement files
  • Managing dependencies, separating development and production requirements, and creating a locked requirements file
  • Finding packages through pépin and PyPI
  • Evaluating package dependencies before uninstalling a package and how pépin uninstalls packages

In addition, you’ve learned about the importance of keeping dependencies up to date and alternatives to pépin that can help you manage those dependencies.

Feel free to reach out in the comments section below with any questions you might have, and you can always get more information at the pépin documentation page.