Outils pour utilisateurs

Outils du site


all:bibles:langages:python:librairies

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

all:bibles:langages:python:librairies [2024/06/14 11:10] – créée - modification externe 127.0.0.1all:bibles:langages:python:librairies [2025/08/20 10:10] (Version actuelle) – [Utilisation] omeylhoc
Ligne 1: Ligne 1:
 +====== Librairies ======
 +
 +----
 +
 +===== Installation =====
 +
 +==== Base ====
 +
 +<code bash>
 +pip install <librairie>
 +</code>
 +
 +==== Environnement virtuel ====
 +
 +Installer puis utiliser pipenv
 +
 +==== Pycharm ====
 +
 +  * créer un environnement virtuel (proposé par Pycharm lors de la création du projet)
 +  * A postériori aller dans « File / Settings... / Project / Python Interpreter » cliquer sur « +  » puis taper le nom du module à rechercher puis en bas cliquer sur « Install Package »
 +
 +===== Pipenv =====
 +
 +[[https://pypi.org/project/pipenv/|Pipenv]]
 +
 +==== Objet ====
 +
 +Simplification dans l'utilisation des librairies et création automatique d'un environnement virtuel.
 +
 +==== Utilisation ====
 +
 +=== Installation Ubuntu ===
 +
 +<code bash>
 +sudo apt install pipenv
 +</code>
 +
 +=== Installation Redhat/CentOS ===
 +
 +<code bash>
 +pip3 install pipenv
 +</code>
 +
 +=== Installation Windows ===
 +
 +  * Installer pipenv
 +
 +<code batch>
 +pip install pipenv
 +</code>
 +
 +  * Modifier la variable PATH pour ajouter les 2 chemins suivants :
 +
 +<code batch>
 +C:\Users\<username>\AppData\Roaming\Python\Python38\Site-Packages
 +C:\Users\<username>\AppData\Roaming\Python\Python38\Scripts
 +</code>
 +
 +=== Initialisation ===
 +
 +Se positionner dans le répertoire du projet et lancer la commande :
 +
 +<code bash>
 +pipenv install --python /usr/bin/python3.8
 +</code>
 +
 +La commande va installer toutes les librairies nécessaires et créer les 2 fichiers suivants s'ils n'existent pas encore :
 +
 +  * Pipfile : contient les dépendances
 +  * Pipfile.lock : contient les informations de version
 +
 +=== Variables d'environnement ===
 +
 +Possibilité de créer un fichier <color #00a2e8>.env</color> contenant les variables d'environnement pour l'exécution du programme. Par exemple pour positionner le niveau de log souhaité :
 +
 +<code bash>
 +## LOG LEVEL ##
 +LOGURU_LEVEL=DEBUG
 +</code>
 +
 +=== Exécution ===
 +
 +<code bash>
 +pipenv run python <fichier.py>
 +</code>
 +
 +==== Dépannage ====
 +
 +=== Débordement de tempo ===
 +
 +Si l'installation prend trop de temps elle peut terminer en échec notamment sur Raspberry PI ou bien en cas de connexion internet trop lente. Pour laisser plus de temps à l'installation il est possible de modifier 2 temporisation avant de lancer la commande PIPENV :
 +
 +<code bash>
 +export PIPENV_INSTALL_TIMEOUT=9999
 +export PIPENV_TIMEOUT=999
 +</code>
 +
 +[[https://stackoverflow.com/questions/51255947/pipenv-install-failing-due-to-timeout|Source]]
 +
 +----
 +
 +===== Tendo =====
 +
 +[[https://pypi.org/project/tendo/|Tendo]]
 +
 +==== Objet ====
 +
 +Ajout de fonctionnalités basiques.
 +
 +==== Fonctions ====
 +
 +=== SingleInstance ===
 +
 +Pour s'assurer de n'avoir qu'une seule instance du programme.
 +
 +<code python>
 +from tendo import singleton
 +
 +singleton.SingleInstance() # fera un sys.exit(-1) si une autre instance est en cours d'exécution
 +</code>
 +
 +----
 +
 +===== Loguru =====
 +
 +[[https://loguru.readthedocs.io/|Loguru]]
 +
 +==== Objet ====
 +
 +Librairies pour gérer simplement les logs du programme.
 +
 +==== Utilisation ====
 +
 +=== Fonctions ===
 +
 +  * debug : information détaillée uniquement pour diagnostiquer un problème
 +  * info : confirmation du déroulement normal du programme
 +  * warning : indication de quelque chose d'inattendu, mais le programme fonctionne normalement
 +  * error : problème plus important, le programme n'a pas pu faire quelque chose
 +  * critical : erreur sérieuse, indique que le programme risque de ne pas pouvoir poursuivre.
 +
 +=== Niveau d'information ===
 +
 +Chacune des fonctions correspond au niveau de log correspondant. Le niveau par défaut est positionné à ''WARNING'', ce qui veut dire que seuls les messages à partir de ce niveau sont affichés (donc pas les niveau ''DEBUG'' et ''INFO'').
 +
 +=== Exemple ===
 +
 +<code python>
 +from loguru import logger
 +
 +logger.setLevel(logging.WARNING)
 +logger.debug("Ce message ne s'affichera pas")
 +logger.info("Celui-ci non plus")
 +logger.warning("Premier message à s'afficher")
 +logger.error("Celui-ci aussi")
 +logger.critical("Ce dernier également")
 +</code>
 +
 +----
 +
 +===== Aiohttp =====
 +
 +[[https://docs.aiohttp.org/|Aiohttp]]
 +
 +==== Objet ====
 +
 +Client/serveur http asynchrone.
 +
 +==== Utilisation ====
 +
 +=== Serveur ===
 +
 +<code python>
 +from aiohttp import web
 +
 +async def handle(request):
 +    name = request.match_info.get('name', "Anonymous")
 +    text = "Hello, " + name
 +    return web.Response(text=text)
 +
 +app = web.Application()
 +app.add_routes([web.get('/', handle),
 +                web.get('/{name}', handle)])
 +
 +if __name__ == '__main__':
 +    web.run_app(app)
 +</code>
 +
 +=== Client ===
 +
 +<code python>
 +import aiohttp
 +import asyncio
 +
 +async def main():
 +
 +    async with aiohttp.ClientSession() as session:
 +        async with session.get('http://python.org') as response:
 +
 +            print("Status:", response.status)
 +            print("Content-type:", response.headers['content-type'])
 +
 +            html = await response.text()
 +            print("Body:", html[:15], "...")
 +
 +loop = asyncio.get_event_loop()
 +loop.run_until_complete(main())
 +</code>
 +
 +----