Cette page présente l'environnement de développement Python. D'autres mémos sont disponibles dans les pages suivantes : les bases, l'orienté objet et les modules.
Environnements de développement
VSCodium
Éditeur de code pour les petits projets ou l'édition de scripts.
VSCodium est une version libre et sans télémétrie de Visual Studio Code. Elle est construite à partir des mêmes sources.
Sous Arch Linux il faut installer les packages AUR vscodium-bin
et vscodium-bin-marketplace
. Ensuite les extensions suivantes peuvent être ajoutées :
- Python : linting, debugging, code autocomplete, code navigation, code formatting, refactoring, variable explorer, test explorer...
- autoDocstring : générateur de docstring
- SQLite : bases de données SQLite
Fleet
Environnement de développement intégré léger et multilangage.
Fleet est l'IDE nouvelle génération de JetBrains en réponse à Visual Studio Code.
Sous Arch Linux il faut installer le package AUR jetbrains-fleet
.
PyCharm
Environnement de développement intégré pour les projets plus importants.
Il existe une version "community" gratuite et une version "professional" payante incluant la prise en charge du développement Web : HTML, JS, SQL...
PyCharm contient de base toutes les fonctionnalités nécessaires pour coder en Python.
Sous Arch Linux il faut installer le package pycharm-community-edition
. Pour améliorer la lisibilité du code, installer les polices Fira Code (ttf-fira-code
) ou JetBrains Mono (ttf-jetbrains-mono
).
Attention : sous Wayland il faut ajouter la variable d'environnement suivante pour que ça fonctionne.
# bash : .bashrc export _JAVA_AWT_WM_NONREPARENTING=1 # fish set -xg _JAVA_AWT_WM_NONREPARENTING 1
Les principaux raccourcis clavier :
- Maj Maj
- Recherche globale
- Ctrl + Maj + F / R
- Recherche / remplacement dans le projet
- Ctrl + Space / Tab
- Complétion de code / remplacement
- Ctrl + Maj + Space
- Complétion de code intelligente
- Alt + Entrée
- Actions contextuelles
- Ctrl + B / Clique gauche
- Déclaration / implémentation(s)
- Ctrl + Q
- Documentation rapide
- Ctrl + /
- Commentaires de ligne
- Ctrl + Alt + O
- Optimisation des imports
- Ctrl + Alt + L
- Formatage du code
- Ctrl + Alt + I
- Indentation automatique
- Ctrl + W / Ctrl + Maj + W
- Sélection étendre / diminuer
- Ctrl + - / +
- Plier / déplier un bloc
- Ctrl + Maj + - / +
- Plier / déplier tous les blocs de code
- Ctrl + Maj + Bas / Haut
- Déplacer une ligne ou un bloc
- Ctrl + X / C / D
- Couper / copier / dupliquer une ligne
- Ctrl + Alt + <- / ->
- Naviguer en avant / arrière
Note : l'outil Emmet inclus dans PyCharm, défini une syntaxe d'abréviations qui permet d'ajouter des fonctionnalités d'autocomplétion puissantes dans les fichiers HTML et CSS.
JupyterLab
Environnement de développement orienté science des données et formation. Il s'agit d'un cahier de laboratoire pour expérimenter, documenter et partager du code Python.
JupyterLab se lance avec la commande jupyter-lab
et s'ouvre automatiquement dans le navigateur.
Astuce : PythonAnywhere propose des instances avec ses offres payantes.
Note : Streamlit est un module qui permet de transformer des scripts de données en applications web.
Environnements virtuels : venv
Un environnement virtuel est un espace isolé du système dans lequel est installé une version spécifique de l'interpréteur Python et des modules nécessaires au fonctionnement d'un projet.
La commande suivante crée un environnement virtuel dans le répertoire courant avec le module venv
:
python3.10 -m venv .env
L'arborescence suivante est créée :
.env
├── bin
│ ├── activate
│ ├── activate.csh
│ ├── activate.fish
│ ├── Activate.ps1
│ ├── pip
│ ├── pip3
│ ├── pip3.10
│ ├── python -> python3.10
│ ├── python3 -> python3.10
│ └── python3.10 -> /sbin/python3.10
├── lib
│ └── python3.10
└── pyvenv.cfg
bin
: interpréteur Python et scripts d'activation de l'environnementlib
: bibliothèques installéespyvenv.cfg
: configuration de l'environnement
Pour activer et désactiver l'environnement virtuel :
~/project$ source .env/bin/activate
(.env) ~/project$ which python
(.env) ~/project$ pip list
(.env) ~/project$ deactivate
Astuce : avec le shell fish lancer le script
activate.fish
.
Gestionnaire de paquets : pip
Le gestionnaire de paquets PIP permet d'installer des modules, des bibliothèques ou des programmes hébergés sur le site pypi.org.
Les commandes principales :
pip list
: liste les paquets installéspip show
: affiche les informations d'un paquetpip search
: recherche un paquetpip install
: installe un paquet et ses dépendancespip uninstall
: désinstalle un paquetpip freeze
: affiche les paquets installés au format requirements
Par exemple pour mettre à jour des dépendances :
pip list --outdated
pip install dependance --upgrade
Attention : ces commandes doivent être lancées dans un environnement virtuel pour ne pas interférer avec les paquets installés sur le système.
Gestionnaire de projet : poetry
Poetry est un outil de gestion de projet pour Python. Il permet de gérer les métadonnées d’un projet, les dépendances, l’environnement de développement, la génération de livrables, la publication, l’environnement d’exécution... Plus de détails dans la dépêche sur LinuxFr et dans la documentation.
Description des commandes principales :
poetry new
initialise un projet en créant une structure de répertoires minimalepoetry init
initialise un fichier pyproject.toml en posant quelques questions sur les métadonnées fondamentalespoetry install
initialise un virtualenv et y installe le projet et ses dépendancespoetry add
etpoetry remove
permettent d’ajouter ou retirer des dépendances d’exécution ou de développementpoetry shell
etpoetry run
exécutent du code dans le virtualenv du projetpoetry env
permet de basculer d’une version de Python à l’autrepoetry version
incrémente la version de votre projet selon la spécification SemVerpoetry build
etpoetry publish
génère et téléverse les livrables d’un projetpoetry export
génère un fichier requirements.txt pour alimenter pippoetry update
met à jour l’ensemble des dépendances en garantissant la compatibilité et en ajoutant les nouvelles sous‑dépendances
Installation et mise à jour :
curl -sSL https://install.python-poetry.org | python3 -
poetry completions bash > /etc/bash_completion.d/poetry
poetry completions fish > ~/.config/fish/completions/poetry.fish
poetry self update
Sous Alpine Linux l'installation des packages suivants est un prérequis :
apk add build-base python3-dev
Création d'un nouveau projet :
poetry new project
L'arborescence suivante est créée :
project
├── pyproject.toml
├── README.md
├── project
│ └── __init__.py
└── tests
├── __init__.py
└── test_project.py
Un fichier pyproject.toml
est créé à la racine. Il rassemble la configuration du projet.
Création d'un nouveau projet Django :
mkdir project cd project poetry init --no-interaction --dependency django poetry install poetry run django-admin startproject config .
Ajout de dépendances :
poetry add markdown # ajoute la dernière version d'une dépendance
poetry add --dev black # ajoute une dépendance de développement
poetry add "Flask==1.1.2" # ajoute la version spécifiée d'une dépendance
Le fichier pyproject.toml
peut aussi être modifié manuellement. Dans ce cas il faudra ensuite installer les dépendances (poetry add
fait automatiquement l'installation en plus de l'ajout dans le fichier) :
poetry check # vérifie la validité du fichier pyproject.toml
poetry install
poetry install --extras feed2toot # installe une dépendance optionnelle
Une fois ceci fait les dépendances sont figées dans un fichier poetry.lock
.
Mise à jour des dépendances :
poetry show --tree
poetry show --outdated
poetry update
Pour mettre à jour une dépendance vers une version plus récente que celle indiquée dans le fichier pyproject.toml
:
poetry add flake8@latest # mise à jour vers la dernière version d'une dépendance
Il est possible d'exporter la liste des dépendances dans un fichier requirements.txt
compatible avec PIP pour simplifier une installation sur un autre poste par exemple :
poetry export -f requirements.txt --output requirements.txt
pip install -r requirements.txt
Lancement d'une commande dans l'environnement virtuel du projet :
poetry run black project # lancement du formateur de code black
poetry run build-site # lancement d'une commande personnalisée
La commande personalisée peut être définie ainsi dans le fichier pyproject.toml
:
[tool.poetry.scripts]
build-site = "project.site:build"
Gestion des environnements virtuels :
poetry shell # ouvre un shell dans l'environnement virtuel
poetry env use python3.10 # change d'environnement
poetry env list # liste les environnements
poetry env info # détaille les environnements
poetry env remove env_name # supprime un environnement
La configuration de Poetry est située dans le fichier .config/pypoetry/config.toml
et peut être affichée avec :
poetry config --list
Pour afficher l'aide :
poetry help
Autres outils
pyinstaller
Distribuer un fichier exécutable contenant une application et toutes ses dépendances : documentation.
Astuce : sous Windows, il existe une interface graphique : auto-py-to-exe.
Création d'une application en mode console à partir d'un script python :
pyinstaller --noconfirm --onedir --console --name AppName app.py
Création d'une application graphique en ajoutant des ressources dans un répertoire data
:
pyinstaller --noconfirm --onedir --windowed --add-data "/home/user/project/data:data" --name AppName /home/user/project/app.py
Création d'une application à partir d'un fichier de configuration :
pyinstaller app.spec
L'option --clean
supprime le cache et les fichiers temporaires.
L'option --onefile
crée un fichier exécutable unique.
Astuce : pour distribuer une application Qt multiplateforme, le module fbs est tout indiqué. Mais seule la version commerciale non libre prend en charge Python 3.7 et Pyside 6. Voir aussi nuitka.
docker
docker permet de conteneuriser les serveurs (email, base de données…) sans les installer sur le système de développement. Il permet aussi de conteneuriser une application afin de la déployer en production.
ngrok
ngrok permet de rendre accessible une application web locale sur Internet en créant un tunnel sécurisé.
mailhog
mailhog permet de tester l'envoi d'emails grâce à un serveur SMTP local.
tokei
tokei permet d'afficher des statistiques sur le code d'un projet.