Recherche de site Web

Outils Python courants : Utiliser virtualenv, Installer avec Pip et Gérer les Paquets


Introduction

Lorsqu'il s'agit de travailler avec Python, en particulier dans le domaine du développement d'applications, il y a certains outils qui sont souvent mentionnés dans divers endroits ou dans du code open source. Bien qu'ils soient extrêmement couramment utilisés, il est parfois difficile de trouver un bon manuel qui vous guide à chaque étape, ce qui est absolument vital pour se familiariser avec des outils aussi importants et nécessaires.

Dans cet article de DigitalOcean, nous visons à vous informer non seulement des bases, mais aussi de la logique derrière les outils et éléments Python populaires alors que nous plongeons dans leur utilisation dans des scénarios de la vie réelle. Nous commencerons par télécharger et installer certaines bibliothèques courantes, configurer et travailler avec des environnements virtuels (en utilisant virtualenv), et gérer les paquets pour le développement et la production de vos propres applications.

Cet article est destiné aux débutants ainsi qu'à ceux qui cherchent à acquérir des connaissances plus approfondies. Si vous souhaitez voir et apprendre davantage, n'hésitez pas à faire une suggestion dans la section des commentaires ci-dessous.

Python sur CentOS

Veuillez vous rappeler que si vous utilisez un système CentOS/RHEL, vous devez vous abstenir d'utiliser l'interpréteur Python par défaut qui est fourni avec le système d'exploitation. Au lieu de cela, vous devriez choisir d'installer Python vous-même.

Si vous ne l'avez pas déjà fait et que vous souhaitez apprendre comment faire, veuillez consulter notre tutoriel : Comment installer Python 2.7.6 et 3.3.3 sur CentOS 6.4 avant que nous commencions.

De même, pour installer pip et virtualenv sur CentOS avec une installation Python personnalisée, vous pouvez suivre les instructions de cet article.

Python et Paquets

Bien que les applications Python puissent être constituées d'un unique fichier, elles se composent généralement d'une série de fonctions, d'objets (classes), d'outils pratiques et bien sûr, de variables réparties sur plusieurs fichiers, placés dans des modules. Ces modules forment ensemble ce que l'on appelle un package.

La méthode traditionnelle d'installation d'un paquet consiste d'abord à le repérer puis à le télécharger. Cela peut sembler doux et simple car c'est en réalité comme beaucoup de choses en Python - mais ce n'est pas parfait.

Lorsque les fichiers sont prêts et décompressés, en utilisant le module distutils, vous pouvez l'installer en appelant setup.py :

Exemple d'installation d'un paquet :

 # Example: cd [package name]
 cd a_package
 python setup.py install

distutils (utilitaires de distribution) est un ensemble d'outils utilisé pour l'emballage et la distribution de code. Il est livré par défaut avec Python (c'est-à-dire inclus dans la bibliothèque standard).

En dépit de la simplicité de la procédure expliquée ci-dessus, cela ne sert à rien si le défi abstrait de l'installation existe ailleurs dans le processus : les trouver et les gérer. C'est là que la gestion des paquets via des outils entre en jeu - apportant plusieurs avantages tels que :

  • Désinstaller (par exemple pip uninstall package_x),
  • Versionnage (par exemple, pip install django==x),
  • Et la gestion automatique des dépendances (puisque les paquets peuvent dépendre d'autres).

Gestion de paquets

Les paquets en Python peuvent être des outils, des bibliothèques, des frameworks et des applications. Compte tenu de la popularité et de la beauté du langage, il existe des dizaines de milliers de paquets disponibles que vous pouvez utiliser pour vos propres projets.

Outils de gestion de paquets

Les deux gestionnaires de paquets Python les plus courants sont pip et easy_install. Tous deux visent à aider les utilisateurs dans les tâches de :

  • Téléchargement, Installation et Désinstallation
  • Bâtiment
  • Gestion des packages Python et bien plus encore

Tous deux peuvent sembler faire la même chose de l'extérieur et leur dépendance commune à la bibliothèque setuptools renforce cette notion.

Cependant, dans ce cas, c'est ce qui est caché à l'œil qui fait la différence — et beaucoup, en plus.

pip contre easy_install

Le premier outil créé pour cette tâche était easy_install. Bien que cela ait été un soulagement et un plaisir à utiliser par rapport à tout faire manuellement, avec le temps, il s'est avéré problématique dans certains aspects. Cela a créé les bases pour le développement de pip, un autre gestionnaire de paquets.

pip (tel que défini par le projet lui-même) est un remplacement pour easy_install, qui apporte de nombreux avantages par rapport à son prédécesseur, y compris, mais sans s'y limiter :

  • Télécharger tout avant d'installer
  • Fournir des commentaires utiles pendant le processus
  • Tenir un historique des actions entreprises
  • Fournir des messages d'erreur utiles en suivant la tradition Python
  • Complète virtualenv et fonctionne avec lui très bien.

Pour en savoir plus sur pip, envisagez de lire son introduction située sur l'index des paquets PyPI en cliquant ici.

Un guide complet sur pip

Dans cette section, nous allons parler de l'obtention des dépendances nécessaires pour pip, installer sa dernière version construite, suivie d'une présentation des fonctionnalités principales offertes telles que installer, désinstaller, geler et gérer les exigences.

Quand utiliserais-je pip ?

Comme promis lors de l'introduction, nous visons à vous donner des exemples de scénarios de la vie réelle.

Imaginez que vous êtes en train de développer une petite application. Vous vous êtes fixé une feuille de route, et tout se passe bien. Puis, vous découvrez une bibliothèque (ou un module) qui peut vous être d'une grande aide si vous l'incluez dans votre application. Vous pouvez la télécharger de la manière traditionnelle comme nous l'avons expliqué. Cependant, une fois que vous n'avez pas juste un mais 3, 4, voire 20 paquets avec lesquels vous devez composer, ce processus devient encombrant. Ajoutez à cela la gestion de ces paquets (par exemple, les mettre à jour, les désinstaller, les remplacer, utiliser une version différente), vous pouvez voir les problèmes auxquels vous devrez faire face, problèmes qui deviennent redondants en utilisant pip, le gestionnaire de paquets.

Installer pip

Pour installer pip, nous devons d'abord nous occuper de ses dépendances. Ne vous inquiétez pas, c'est très facile.

setuptools

Comme expliqué ci-dessus, l'une des dépendances de pip est la bibliothèque setuptools. Elle s'appuie sur la fonctionnalité (standard) de l'outil de distribution de Python appelé distutils. Étant donné que distutils est fourni par défaut, tout ce qui nous reste à faire est d'installer setuptools.

Nous allons télécharger en toute sécurité les fichiers d'installation pour setuptools en utilisant curl. cURL est une bibliothèque système qui permet le transfert de données sur divers protocoles (c'est-à-dire une langue commune pour l'échange de données entre applications, comme HTTP). Il vérifiera les certificats SSL de la source et transmettra les données à l'interpréteur Python.

Ces fichiers de configuration, que l'interpréteur Python va exécuter, automatisent le processus d'installation car ils installent la dernière version stable sur notre système.

Exécutez la commande suivante :

 curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -

Cette installation nous permet d'utiliser pip globalement sur le système. Cependant, ce n'est pas la méthode préférée pour installer un autre paquet. Ce qui est recommandé est d'utiliser toujours des environnements Python autonomes, virtualenv. Nous en parlerons dans la section suivante.

Remarque : Vous pourriez avoir besoin d'obtenir explicitement des privilèges super utilisateur pour continuer le téléchargement. Dans ce cas, envisagez d'utiliser :

 curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | sudo python -

Après avoir installé sa seule dépendance, nous pouvons maintenant continuer avec le téléchargement et la configuration de pip.

Nous allons à nouveau utiliser curl pour télécharger et installer le fichier de configuration en toute sécurité.

Exécutez la commande suivante :

 curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -

Le dossier d'installation par défaut pour pip se trouve à :

/usr/local/bin

Afin de l'utiliser sans indiquer le chemin complet, il doit être ajouté à PATH.

Mise à jour de PATH :

 export PATH="/usr/local/bin:$PATH"

Après avoir complété cette étape, nous sommes prêts à travailler avec pip.

Utiliser pip

Utiliser pip est vraiment amusant et peut être considéré comme sans tracas. Si vous avez été confronté à des problèmes absolument inutiles dans le passé et que vous ne compreniez même pas pourquoi, pip veillera à ce qu'ils soient minimisés pour vous à partir de maintenant.

Installer des paquets en utilisant pip

pip peut faire beaucoup de choses, mais il ne serait pas exagéré de dire que la fonction la plus souvent utilisée est l'installation de paquets. Il existe plusieurs manières de gérer ce travail pour vous.

Trouver et installer des paquets :

 # Example: pip install [package name]
 # Let's install the excellent *requests* library
 pip install requests

Trouver et installer une version spécifique :

 # Example: pip install [package name]==[version]
 # Let's install version 2.0.0. of requests
 pip install requests==2.0.0

Installation à partir d'une URL ou d'un dépôt VCS :

 # Example: pip install [url]
 # Let's install virtualenv
 pip install https://github.com/pypa/virtualenv/tarball/1.9.X

Installation dans un virtualenv :

 # Example: pip install [env name] [package name]
 # This will either install inside an environment, or create one
 # Let's install requests inside a virtualenv called *venv*
 pip install -E venv requests

Désinstaller des packages avec pip :

La deuxième fonction la plus courante de pip est probablement de désinstaller des paquets.

Désinstaller un paquet :

 # Example: pip uninstall [package name]
 # Let's remove requests library
 pip uninstall requests 

Mise à jour des packages avec pip

Si vous envisagez de désinstaller pour installer une version plus récente d'une application, vous pouvez essayer d'effectuer une mise à niveau.

Mise à jour d'un paquet :

 # Example: pip install --upgrade [package name]
 # Let's upgrade requests library
 pip install --upgrade requests

Recherche de paquets avec pip

Avant de décider de supprimer ou de mettre à niveau un paquet, vous pourriez ressentir le besoin de d'abord chercher un.

Recherche d'un colis :

 # Example: pip search [package name]
 # Let's find all django packages
 # This might take a while (there's tonnes of them!)
 pip search django

Créer une liste des paquets installés avec pip

Une des capacités vraiment exceptionnelles et salvatrices de pip est de pouvoir créer - avec aisance - des listes (« freeze ») de paquets installés. Cela est également souvent appelé exigences. Selon votre environnement Python (qu'il soit virtuel ou global), pip créera un fichier listant tous les paquets installés avec une seule commande.

Créer une nouvelle liste (« gel ») :

Remarque : Cette commande générera un fichier dans le répertoire de travail actuel.

 # Example: pip freeze > [file name.ext]
 # Let's list all the packages currently installed
 pip freeze > package_list.txt

Créer une liste (« gel ») sur le desssus d'un modèle :

Remarque : Cette commande générera un fichier dans le répertoire de travail actuel.

 # Example: pip freeze -r [existing file.ext] > [filename.ext]
 # Let's append new packages installed after the last freeze
 pip freeze package_list.txt > package_list_new.txt

Installer tous les paquets d'une liste avec *pip

Lorsque vous travaillez sur une application - de préférence dans un environnement virtuel - toutes ses dépendances (packages requis) y seront installées. Après avoir extrait une liste de celles-ci en utilisant freeze, vous pouvez les réinstaller avec install.

Installation de tous les paquets d'une liste (“freeze”):

 # Example: pip install -r [file name.ext]
 # Let's install back all the packages from the previous example
 pip install -r package_list_new.txt

Un guide complet sur virtualenv

Commençons par définir ce qu'est exactement virtualenv et la situation dans laquelle il est utile.

environnement virtuel:

Dans le monde de Python, un environnement est un dossier (répertoire) qui contient tout ce dont un projet Python (application) a besoin pour s'exécuter de manière organisée et isolée. Lorsqu'il est initialisé, il est automatiquement fourni avec son propre interpréteur Python - une copie de celui utilisé pour le créer - ainsi qu'avec son propre pip.

Il y a un certain nombre de problèmes que virtualenv résout :

  • Créer un environnement frais et isolé pour un projet Python
  • Pouvoir télécharger des paquets sans nécessiter de privilèges administratifs/sudo.
  • Emballer facilement une application
  • Créer une liste de dépendances qui appartient à un seul projet créé avec pip
  • Récupérer facilement les dépendances à l'aide d'un fichier requirements créé avec pip.
  • Céder à la portabilité entre les systèmes

Utiliser virtualenv est la méthode recommandée pour travailler avec des projets Python, peu importe combien vous pourriez en avoir. C'est très facile à utiliser et c'est un excellent outil à votre disposition. Cela fait vraiment des merveilles lorsqu'il est associé à pip.

Nous allons commencer par installer virtualenv sur le système.

Installation de virtualenv

Pour installer virtualenv, nous allons faire appel à pip pour obtenir de l'aide. Nous allons l'installer en tant que package disponible globalement pour que l'interpréteur Python puisse l'utiliser.

Il y a deux façons d'obtenir l'application. La version que vous pourrez obtenir dépend de celle que vous choisissez.

La méthode la plus simple consiste à utiliser pip pour rechercher, télécharger et installer. Cela pourrait ne pas vous fournir la dernière version stable.

Téléchargement de virtualenv avec pip :

 # Example: [sudo] pip install virtualenv
 sudo pip install virtualenv

Télécharger la dernière version disponible en utilisant curl :

La dernière version de virtualenv est 1.11.X.

 # Example: [sudo] pip install [github repo]/[version]
 sudo pip install https://github.com/pypa/virtualenv/tarball/1.1.X

Utiliser virtualenv

L'utilisation de cet outil consiste à créer un dossier contenant l'interpréteur Python et une copie de pip. Ensuite, pour pouvoir travailler avec, nous devons soit spécifier l'emplacement de cet interpréteur, soit l'activer.

Toutes les applications que vous installez en utilisant l'interpréteur à l'intérieur de l'environnement virtuel seront placées à cet endroit.

Lorsque vous utilisez pip pour créer une liste d'eux, seuls ceux à l'intérieur du dossier seront compilés dans un fichier.

Rappelez-vous : Lorsque vous avez terminé de travailler avec un environnement, avant de passer à un autre - ou de travailler avec celui installé globalement - vous devez vous assurer de désactiver celui-ci.

Créer/Initier un environnement virtuel (virtualenv)

Créer un environnement en utilisant le même interpréteur que celui utilisé pour l'exécuter :

 # Example: virtualenv [folder (env.) name]
 # Let's create an environment called *my_app*
 virtualenv my_app

Créer un environnement avec un interpréteur Python personnalisé :

 # Example: virtualenv --python=[loc/to/python/] [env. name]
 virtualenv --python=/opt/python-3.3/bin/python my_app

Activer un environnement virtuel

 # Example: source [env. name]/bin/activate
 # Let's activate the Python environment we just created
 source my_app/bin/activate

Travailler avec un environnement virtuel sans l'activer

Pour diverses raisons, vous pourriez choisir de ne pas activer l'environnement avant de l'utiliser. Cela apporte plus de flexibilité aux commandes que vous exécutez, cependant, vous devez vous assurer de cibler le bon interpréteur à chaque fois.

 # Example: [env. name]/bin/python [arguments]
 my_app/bin/python python_script.py

Utiliser l'installation pip à l'intérieur de l'environnement sans activation

 # Example: [env. name]/bin/pip [command] [arguements]
 # Let's install requests library without activating the env.
 my_app/bin/pip install requests

Désactiver un environnement virtuel:

 # Example: deactivate
 # Let's deactivate the environment from earlier
 deactivate 

Soumis par : O.S. Tezer