Licence CC BY-SA

Quelques modules complémentaires bien utiles

Voyons maintenant quelques bibliothèques tierces en Python assez connues, que vous pourriez être amenés à utiliser pour répondre à différents besoins.

Requests

Requests est une bibliothèque Python de référence, qui permet de réaliser des requêtes HTTP (interroger des sites web). Elle est connue pour sa facilité d’utilisation.

On l’installe via pip install requests.

Par exemple on peut l’utiliser pour interroger l’API de Zeste de Savoir, ici pour obtenir la liste des tags du site.

>>> import requests
>>> resp = requests.get('https://zestedesavoir.com/api/tags')
>>> resp.status_code
200
>>> resp.text
'{"count":5071,"next":"https://zestedesavoir.com/api/tags/?page=2","previous":null,"results":[{"id":1,"title":"exercice"},{"id":2,"title":"java"},{"id":3,"title":"langages oo"},{"id":4,"title":"urgent"},{"id":5,"title":"bug"},{"id":6,"title":"suggestion"},{"id":7,"title":"transmis"},{"id":8,"title":"blog"},{"id":9,"title":"régression"},{"id":10,"title":"front"}]}'
>>> resp.json()
{'count': 5071,
 'next': 'https://zestedesavoir.com/api/tags/?page=2',
 'previous': None,
 'results': [{'id': 1, 'title': 'exercice'},
             {'id': 2, 'title': 'java'},
             {'id': 3, 'title': 'langages oo'},
             {'id': 4, 'title': 'urgent'},
             {'id': 5, 'title': 'bug'},
             {'id': 6, 'title': 'suggestion'},
             {'id': 7, 'title': 'transmis'},
             {'id': 8, 'title': 'blog'},
             {'id': 9, 'title': 'régression'},
             {'id': 10, 'title': 'front'}]}

Pour plus d’informations au sujet de Requests, je vous invite à consulter sa documentation.

Numpy

Numpy est une bibliothèque dédiée au calcul numérique, offrant de bonnes performances pour ces opérations. Elle est très utilisée dans le domaine scientifique (data science).

Elle s’installe facilement avec Pip : pip install numpy .

Ensuite c’est une bibliothèque qui permet notamment de manipuler des tableaux de données (de même type), et d’effectuer des opérations en lots sur les valeurs de ces tableaux.

>>> import numpy as np
>>> array = np.array([[1, 2, 3], [4, 5, 6]])
>>> array.size  # nombre de valeurs
6
>>> array.ndim  # nombre de dimensions
2
>>> array.shape  # taille des dimensions
(2, 3)
>>> array.dtype  # type des valeurs
dtype('int64')
>>> array
array([[1, 2, 3],
       [4, 5, 6]])
>>> array + 1
array([[2, 3, 4],
       [5, 6, 7]])
>>> array * 3
array([[ 3,  6,  9],
       [12, 15, 18]])
>>> array + np.arange(10, 16).reshape(2, 3)
array([[11, 13, 15],
       [17, 19, 21]])

Pour aller plus loin, rendez-vous sur la documentation de la bibliothèque Numpy.

Intéressez-vous aussi aux bibliothèques SciPy (calculs numériques, calculs formels) et pandas (analyse de données) construites autour de Numpy qui s’utilisent conjointement avec elle.
La matplotlib, une bibliothèque de visualisation et de dessin de graphiques en Python est aussi couramment utilisée avec Numpy, un cours est même disponible sur Zeste de Savoir à son sujet.

Django

Django est la référence en tant que framework pour le web, c’est une bibliothèque très complète qui permet de mettre en place en site Internet en Python. Django embarque par exemple de quoi abstraire la base de données en modèles (types Python) et générer des pages à partir de gabarits (templates).
Zeste de Savoir par exemple est codé avec Django : https://github.com/zestedesavoir/zds-site.

Django s’installe à l’aide de la commande pip install Django.

Un tutoriel sur le site permet d’apprendre à utiliser Django, mais il n’est plus maintenu à jour, vous pouvez alors vous orienter vers le tutoriel officiel et la documentation traduits en français.

Sur le site, vous trouverez un autre tuto pour apprendre à déployer une application Django.

Django n’est pas la seule bibliothèque pour créer des sites web. Flask est notamment connu pour être un framework plus léger (mais moins complet).

Pillow

Pillow est un paquet Python dédié à l’imagerie, c’est une bibliothèque qui permet de lire et créer des images.

Le paquet Pip s’appelle Pillow (pip install Pillow), mais c’est ensuite un module PIL qu’il faut importer depuis le code. PIL était l’ancien nom du paquet (en Python 2), Python Image Libary.

from PIL import Image, ImageDraw

img = Image.new('RGB', (400, 300), color='red')  # crée une nouvelle image
draw = ImageDraw.Draw(img)
draw.rectangle(((100, 100), (300, 200)), fill='blue')
img.show()  # affiche l'image dans une fenêtre
img.save('output.png')  # enregistre l'image

Des informations complémentaires sur Pillow peuvent être trouvée dans la documentation de la bibliothèque.

PyGObject (PyGTK)

PyGObject (anciennement PyGTK) est une bibliothèque qui permet de créer des programmes fenêtrés, des interfaces graphiques riches (GUI) formées de zones de texte, de menus ou encore de boutons.
Elle repose sur Gtk, un module logiciel écrit en C pour réaliser de telles interfaces, notamment utilisé par Gimp, Firefox ou encore Gnome.

Caputre d'écran
Capture d’écran de Quod Libet, un lecteur de musique écrit en Python utilisant PyGtk.

La procédure d’installation de PyGObject varie selon les systèmes, je vous laisse donc consulter cette page pour trouver celle qui vous convient.

Ensuite je vous invite à lire ce tutoriel de @Wizix sur Zeste de Savoir pour apprendre comment prendre en main cette bibliothèque. Vous pouvez aussi vous reporter au tutoriel officiel (en anglais).
Voici néanmoins un code permettant de réaliser une petite interface.

import gi
# Vérification de la version de Gtk
gi.require_version("Gtk", "3.0")

from gi.repository import Gtk

# Création d'une fenêtre
window = Gtk.Window(title='Hello World')
box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
window.add(box)

# Ajout d'éléments graphiques

label = Gtk.Label(label='Salut')
box.pack_start(label, True, True, 0)

button = Gtk.Button(label='Clique !')
box.pack_start(button, True, True, 0)

# Connexion des événements et affichage

window.show_all()
window.connect('destroy', Gtk.main_quit)
button.connect('clicked', Gtk.main_quit)

Gtk.main()

Consultez aussi le site officiel pour aller plus loin avec PyGtk.

Bon à savoir : la bibliothèque standard de Python embarque le module tkinter pour créer des programmes fenêtrés, mais qui n’est pas forcément le module le plus abordable pour cela.
Sur certains systèmes (Debian/Ubuntu par exemple) il n’est pas présent par défaut et il faut installer le paquet APT python3-tk.

Voir Programmation avec tkinter de @Dan737 ou ce tutoriel de @pascal.ortiz pour en apprendre plus sur tkinter.

PyGtk et tkinter ne sont pas les seules bibliothèques pour écrire des programmes GUI, on trouve par exemple PyQt ou wxPython.

Pygame

Pygame est aussi une bibliothèque dédiée à écrire des interfaces graphiques, mais pas des programes fenêtrés. Elle est plutôt dédiée aux interfaces « imagées », comme des jeux vidéo.

Capture d'écran
Flappython, un jeu-vidéo fictif que l’on pourrait réaliser avec Pygame.

Elle s’installe par la commande pip install pygame dans l’environnement courant.

Elle met ensuite à disposition différents éléments graphiques pour créer des fenêtres et dessiner à l’écran.

import pygame

pygame.init()

screen = pygame.display.set_mode((800, 600))
running = True

screen.fill((255, 255, 255))
pygame.draw.rect(screen, (0, 0, 255), (200, 200, 400, 200))

while running:
    pygame.display.update()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

pygame.quit()

Pour apprendre à utiliser Pygame, je vous renvoie à ce tutoriel de @SuperFola sur Zeste de Savoir et à la documentation de la bibliothèque.

Une fois encore, Pygame n’est pas seule dans son domaine, vous trouverez ainsi pyglet (abstraction autour d'OpenGL, plus bas-niveau), Arcade (construite autour de pyglet) ou PySFML (qui ne semble plus maintenue).