Python : l'environnement

nora.nckm.eu

Illustration

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 on 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 :

VSCodium

PyCharm

Environnement de développement intégré (EDI) 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

PyCharm

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.

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

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 :

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 :

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

Note

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 demo

L'arborescence suivante est créée :

demo
├── pyproject.toml
├── README.md
├── demo
│   └── __init__.py
└── tests
    ├── __init__.py
    └── test_demo.py

Un fichier pyproject.toml est créé à la racine. Il rassemble la configuration du projet.

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 demo # 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 = "demo.site:build"

Gestion des environnements virtuels :

poetry shell # ouvre un shell dans l'environnement virtuel

poetry env list # liste les environnements créés
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

Astuce

Pour afficher l'aide :

poetry help

Modules

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" "/home/user/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.py

Un fichier app.spec est créé et peut être modifié avant de relancer la commande précédente.

Un commentaire sur un de mes articles ? Commencez une discussion sur ma liste de diffusion en envoyant un email à ~nora/public-inbox@lists.sr.ht [règles]