pip install <librairie>
Installer puis utiliser pipenv
Simplification dans l'utilisation des librairies et création automatique d'un environnement virtuel.
sudo apt install pipenv
pip3 install pipenv
pip install pipenv
C:\Users\<username>\AppData\Roaming\Python\Python38\Site-Packages C:\Users\<username>\AppData\Roaming\Python\Python38\Scripts
Se positionner dans le répertoire du projet et lancer la commande :
pipenv install --python /usr/bin/python3.8
La commande va installer toutes les librairies nécessaires et créer les 2 fichiers suivants s'ils n'existent pas encore :
Possibilité de créer un fichier .env contenant les variables d'environnement pour l'exécution du programme. Par exemple pour positionner le niveau de log souhaité :
## LOG LEVEL ## LOGURU_LEVEL=DEBUG
pipenv run python <fichier.py>
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 :
export PIPENV_INSTALL_TIMEOUT=9999 export PIPENV_TIMEOUT=999
Ajout de fonctionnalités basiques.
Pour s'assurer de n'avoir qu'une seule instance du programme.
from tendo import singleton singleton.SingleInstance() # fera un sys.exit(-1) si une autre instance est en cours d'exécution
Librairies pour gérer simplement les logs du programme.
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).
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")
Client/serveur http asynchrone.
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)
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())