Initial commit
This commit is contained in:
208
documentation/99-more-packages.md
Normal file
208
documentation/99-more-packages.md
Normal file
@ -0,0 +1,208 @@
|
||||
---
|
||||
title: Les paquets externes
|
||||
author: Steve Kossouho
|
||||
mainfont: Source Sans Pro
|
||||
---
|
||||
|
||||
# Plus de paquets
|
||||
|
||||
----
|
||||
|
||||
L'écosystème de paquets tiers pour Python est regroupé essentiellement sur un dépôt officiel, nommé [PyPI](https://pypi.org) (Python Package Index).
|
||||
|
||||
Outre l'utilisation de `pip` pour y accéder, quelques questions sont occasionnellement posées quant à la perennité de ces paquets dans des environnements professionnels, notamment où la sécurité importe particulièrement.
|
||||
|
||||
----
|
||||
|
||||
## Critères d'un paquet de qualité
|
||||
|
||||
Plusieurs critères font d'une bibliothèque un atout de choix dans une pile technique (limitent le risque);
|
||||
|
||||
- Pris en charge par une société établie (l'argent appelle l'argent),
|
||||
- Existe depuis longtemps (2 ans), et est mis à jour régulièrement avec une gestion active des tickets,
|
||||
- Est correctement et régulièrement documenté,
|
||||
- La communauté connaît et utilise suffisamment cette bibliothèque,
|
||||
|
||||
----
|
||||
|
||||
Ce n'est pas tout :
|
||||
|
||||
- Des sociétés privées proposent une prise en charge technique de la bibliothèque,
|
||||
- Des sociétés établies s'en servent en production ! (bon, une des pires failles de l'histoire avec log4j en 2021 était potentiellement exploitable chez toutes les Fortune500)
|
||||
|
||||
----
|
||||
|
||||
## Rappel sur l'utilisation de `pip`
|
||||
|
||||
`pip` est un programme installé avec Python qui vous permet de télécharger et installer (dans votre virtualenv ou autre) des
|
||||
paquets du dépôt PyPI. On peut l'utiliser de plein de façons différentes, mais l'essentiel, c'est d'ouvrir un terminal et de
|
||||
taper (évidemment il faut remplacer les éléments nécessaires)
|
||||
|
||||
```shell
|
||||
pip install <nom du paquet>
|
||||
```
|
||||
|
||||
----
|
||||
|
||||
## Traitement du texte
|
||||
|
||||
- `unidecode` : retirer les accents et translittérer.
|
||||
- `nltk` : usine à gaz pour le traitement du langage naturel (500+ Mo)
|
||||
- `chardet` : bibliothèque capable de suggérer une page de code pour un fichier texte (devine s'il s'agit de UTF8, UTF16, 850, 1252, etc.)
|
||||
|
||||
----
|
||||
|
||||
## Dates et heures
|
||||
|
||||
- `pytz` : simplifier le cauchemar des fuseaux horaires dans la bibliothèque standard. (corrigé dans Python 3.9 avec `zoneinfo`)
|
||||
- `pendulum` : traitement des dates, intervalles et dé/encodage de texte.
|
||||
- `arrow` : traitement des dates etc.
|
||||
- `ciso8601` : décodage rapide de chaînes de dates. Suivi en vitesse par `pendulum`.
|
||||
|
||||
----
|
||||
|
||||
## Web
|
||||
|
||||
- `flask` : microframework pour faire du web. Démarrage rapide, évolution plus compliquée.
|
||||
- `django` : framework web efficace et complet avec son propre ORM.
|
||||
- `fastapi` : framework pour écrire des API REST, récent.
|
||||
- `jupyter` : console Python interactive avancée
|
||||
- `jupyterlab` : console Python interactive avancée (encore plus avancée)
|
||||
|
||||
----
|
||||
|
||||
## Réseau
|
||||
|
||||
- `scapy` : manipulation de paquets réseau
|
||||
- `paramiko` : implémentation du protocole SSHv2
|
||||
|
||||
----
|
||||
|
||||
## ORM
|
||||
|
||||
- `sqlalchemy` : l'ORM de prédilection utilisé avec Flask
|
||||
- `peewee` : ORM inspiré de Django
|
||||
- `ponyorm` : ORM bien pensé
|
||||
|
||||
----
|
||||
|
||||
## Automatisation
|
||||
|
||||
- `fabric` : exécution de scripts sur plusieurs machines distantes via SSH.
|
||||
- `ansible` : très utilisé pour exécuter des trucs sur des machines via SSH.
|
||||
- `celery` : une file de tâches en Python, utilisable comme un cron, avec monitoring.
|
||||
- `selenium` : automatisation d'actions dans un navigateur web pour tests ou autres.
|
||||
- `playwright` : automatisation de navigateur web, meilleure expérience que Selenium. Par Microsoft.
|
||||
- `mouse` : émuler et/ou réagir à des actions souris.
|
||||
- `keyboard` : émuler et/ou réagir à des actions clavier.
|
||||
- `faker` : générer des données factices (noms, adresses, clés d'API, nationalité, lorem etc.)
|
||||
|
||||
----
|
||||
|
||||
## Fichiers structurés
|
||||
|
||||
- `pandas` : Analyse de données tabulaires : Excel, JSON, CSV... tri, calcul, et génération de graphiques.
|
||||
- `dask` : Analyse de données parallélisable.
|
||||
- `modin` : Pandas parallélisable avec plusieurs backends disponibles.
|
||||
- `pyspark` : Analyse de données clusterisable (avec Spark).
|
||||
- `optimus` : boîte à outils d'analyse de données, peut utiliser `pandas`.
|
||||
- `spire.xls` : manipulation de fichiers Excel et export dans plusieurs formats dont PDF. [Lien](https://pypi.org/project/Spire.Xls/)
|
||||
- `pdfkit` : générer du PDF depuis du HTML
|
||||
- `weasyprint` : générer des documents PDFbdepuis du HTML. Full Python, plus stable.
|
||||
- `reportlab` : usine à gaz pour créer du PDF.
|
||||
- `pypdf2` : manipuler des PDF (rotation, découpage des pages etc.)
|
||||
|
||||
----
|
||||
|
||||
- `lxml` : manipuler des XML
|
||||
- `beautifulsoup4` : manipuler du code HTML
|
||||
|
||||
----
|
||||
|
||||
## Manipuler des images
|
||||
|
||||
- `pillow` : bibliothèque classique pour créer et traiter des images.
|
||||
- `pyside` : possède une classe QImage performante.
|
||||
- `skia` : par Google, dessin vectoriel, depuis env. 2017.
|
||||
- `cairo` : dessin vectoriel, depuis env. 2005.
|
||||
- `wand` : utiliser les fonctionnalités de ImageMagick.
|
||||
- `ffmpeg-python` : utiliser les fonctionnalités de FFMPeg
|
||||
|
||||
----
|
||||
|
||||
## HTTP
|
||||
|
||||
- `requests` : facilite le HTTP. Capable de désérialiser du JSON depuis une réponse HTTP.
|
||||
- `python-dotenv` : permet de charger des informations depuis un fichier d'environnement (.env)
|
||||
- `fastapi` : concevez rapidement une API REST en Python.
|
||||
|
||||
----
|
||||
|
||||
## IA et vision assistée par ordinateur
|
||||
|
||||
- `keras` : IA plus facile en Python. Dépend de TensorFlow.
|
||||
- `tensorflow` : IA en Python.
|
||||
- `pytorch` : IA en Python.
|
||||
- `opencv` : incontournable pour le traitement d'images et la détection de caractéristiques.
|
||||
|
||||
----
|
||||
|
||||
## Calcul
|
||||
|
||||
- `numpy` : calcul rapide sur des données matricielles, tabulaires ou en n-dimensions.
|
||||
- `scikit-learn` : apprentissage machine.
|
||||
|
||||
----
|
||||
|
||||
## Afficher des graphiques
|
||||
|
||||
- `matplotlib` : bibliothèque d'affichage de graphes
|
||||
- `pygal` : bibliothèque d'affichage de graphes en SVG
|
||||
- `seaborn` : plus élégant que Matplotlib pour afficher des graphiques
|
||||
- `plotly` : affichage de graphiques via les technologies web
|
||||
- `dash` : générer des tableaux de bord avec des graphiques (entre autres)
|
||||
|
||||
----
|
||||
|
||||
## Formatage du code Python et vérification stylistique
|
||||
|
||||
- `black` : formate votre code sans poser de question. Très utilisé professionnellement.
|
||||
- `pylint` : indique tous les problèmes de normes et convention dans votre code.
|
||||
- `flake8` : problèmes de normes et convention, plutôt orienté PEP8.
|
||||
- `isort` : trie les imports automatiquement.
|
||||
- `radon` : outil de génération de métriques sur le code.
|
||||
- `mypy` : vérification des annotations de type.
|
||||
|
||||
----
|
||||
|
||||
## Boilerplate Python
|
||||
|
||||
- `attrs` : Bibliothèque de décorateurs pour `dataclasses`
|
||||
|
||||
----
|
||||
|
||||
## Spécialité Windows
|
||||
|
||||
- `winregistry` : accès simplifié à la base de registre Windows.
|
||||
|
||||
----
|
||||
|
||||
## Générer des exécutables
|
||||
|
||||
- `pyinstaller` : Convertisseur de scripts Python en exécutables autonomes.
|
||||
- `py2exe` : Idem.
|
||||
|
||||
[Comparaison avec d'autres packagers](https://pyoxidizer.readthedocs.io/en/stable/pyoxidizer_comparisons.html)
|
||||
|
||||
----
|
||||
|
||||
## Awesome Python
|
||||
|
||||
[Curation des meilleurs paquets Python](https://github.com/vinta/awesome-python)
|
||||
|
||||
|
||||
----
|
||||
|
||||
Ressources d'entraînement à Python
|
||||
|
||||
https://store.steampowered.com/app/1067220/RoboCo/
|
Reference in New Issue
Block a user