Skip to content

13. Annexes

13.1. Installation de Python

Les exemples et l'étude de cas demandent [Python] 3.12 ou une version plus récente ([Django] 6.1 l'exige). Ils ont été testés avec la version 3.13.

Sous [Windows], on télécharge l'installateur sur la page python.org/downloads (le bouton Download Python 3.13.x, ou une version plus récente). Au premier écran de l'installateur, on coche la case Add python.exe to PATH, qui permet de taper [python] dans n'importe quelle console, puis Install Now. L'installateur installe aussi [pip], le module [venv], et le lanceur [py] ([py -3.13] lance une version précise, quand plusieurs sont installées). Sous [Windows] 10 et 11, taper [python] sans l'avoir installé ouvre le Microsoft Store : c'est un raccourci du système, que l'on peut désactiver (Paramètres / Applications / Paramètres avancés des applications / Alias d'exécution d'application).

Sous [macOS], on utilise l'installateur de python.org, ou le gestionnaire de paquets [Homebrew] : [brew install python@3.13]. Sous [Linux], [Python] est déjà présent, mais le module [venv] et [pip] sont souvent des paquets à part. Sous [Ubuntu] 24.04 (dont la version de [Python] est la 3.12) :

sudo apt install python3 python3-venv python3-pip

Sous [macOS] et [Linux], les commandes s'appellent [python3] et [pip3] ; dans un environnement virtuel activé, [python] et [pip] suffisent. On vérifie l'installation dans une nouvelle console :

python --version
python -m pip --version

La première commande doit afficher un numéro de version égal ou supérieur à 3.12 (par exemple [Python 3.13.7]).

13.2. pip et les environnements virtuels

[pip] est le gestionnaire de bibliothèques de [Python]. Il télécharge les bibliothèques depuis le dépôt [PyPI] (pypi.org) : il faut une connexion Internet lors de l'installation. Derrière un proxy d'entreprise, on indique le proxy par les variables d'environnement [HTTP_PROXY] et [HTTPS_PROXY], ou par l'option [--proxy] de [pip].

Un environnement virtuel est un dossier qui contient une copie légère de l'interpréteur [Python] et ses propres bibliothèques : chaque projet a les siennes, dans les versions qu'il demande, sans toucher à l'installation de [Python] ni aux autres projets. Les commandes utiles, dans le dossier d'un projet (celui qui contient [requirements.txt]) :

1
2
3
4
5
6
7
python -m venv .venv                 # créer l'environnement virtuel (dossier .venv)
.venv\Scripts\activate               # l'activer (Windows)
source .venv/bin/activate            # l'activer (Linux, macOS)
pip install -r requirements.txt      # installer les bibliothèques du projet
pip list                             # les bibliothèques installées
pip freeze                           # la même liste, au format de requirements.txt
deactivate                           # quitter l'environnement

Sous [Windows], [PowerShell] refuse parfois d'exécuter le script d'activation (« l'exécution de scripts est désactivée sur ce système ») : la commande [Set-ExecutionPolicy -Scope CurrentUser RemoteSigned] l'autorise pour l'utilisateur courant. On peut aussi se passer de l'activation, en appelant directement l'interpréteur de l'environnement : [.venv\Scripts\python manage.py runserver].

Le dossier [.venv] ne se copie pas d'une machine à l'autre (il contient des chemins absolus, et des programmes propres au système) : on le recrée par les commandes ci-dessus. C'est pourquoi il ne fait pas partie des codes du cours. Le dossier [exemples] a son environnement, partagé par les 28 exemples ; l'étude de cas a le sien.

La bibliothèque [mysqlclient], le pilote [MySQL] (exemple 28 et étude de cas), est écrite en C. Sous [Windows], [pip] télécharge une version déjà compilée : rien à faire. Sous [Linux] et [macOS], [pip] la compile, et a besoin pour cela des fichiers de développement de [MySQL] et d'un compilateur :

1
2
3
sudo apt install python3-dev default-libmysqlclient-dev build-essential pkg-config     # Ubuntu, Debian
brew install mysql-client pkg-config                                                    # macOS
export PKG_CONFIG_PATH="$(brew --prefix)/opt/mysql-client/lib/pkgconfig"                # macOS, avant pip install

Sans eux, [pip install -r requirements.txt] échoue sur [mysqlclient], avec un message qui parle de [pkg-config] ou de [mysql_config].

13.3. Installation de Visual Studio Code

[Visual Studio Code] se télécharge sur code.visualstudio.com. On y ajoute trois extensions (menu Affichage / Extensions) :

  • Python (de Microsoft) : l'exécution et le débogage du code [Python], la gestion des environnements virtuels. Elle installe avec elle l'extension Python Debugger ;
  • Pylance (de Microsoft, installée elle aussi avec l'extension Python) : la complétion, la navigation dans le code (y compris celui de [Django], dans le dossier [.venv]), le signalement des erreurs, la vérification des annotations de type ;
  • Django (de Baptiste Darthenay) : la coloration syntaxique et des raccourcis pour les gabarits de [Django] (fichiers [.html] du dossier [templates]).

On ouvre le dossier [exemples], ou le dossier de l'étude de cas (menu Fichier / Ouvrir le dossier), puis on choisit l'interpréteur de l'environnement virtuel du dossier (palette des commandes, Ctrl+Maj+P, Python: Select Interpreter, puis celui de [.venv]). Le terminal intégré (menu Terminal / Nouveau terminal) active alors lui-même l'environnement, et permet de lancer les applications, et les commandes [python manage.py ...], sans quitter l'éditeur.

Pour exécuter une application pas à pas, on crée une configuration de débogage (menu Exécuter / Ajouter une configuration, puis Python Debugger et Django) : l'éditeur lance [manage.py runserver] sous le contrôle du débogueur, et s'arrête sur les points d'arrêt placés dans les vues.

13.4. Installation de MySQL avec Laragon

[Laragon] installe sous [Windows] un serveur [MySQL] prêt à l'emploi, avec l'outil d'administration [HeidiSQL] (cf. « Installation de Laragon », dans l'introduction). Après installation :

  • le bouton Démarrer tout lance le serveur [MySQL], sur le port 3306 ;
  • l'utilisateur [root] n'a pas de mot de passe : ce sont les valeurs du réglage [DATABASES] de l'exemple 28 ([config/settings.py]), et des variables [DB_USER] et [DB_PASSWORD] du fichier [.env] de l'étude de cas ;
  • le bouton Base de données ouvre [HeidiSQL], où le menu Fichier / Exécuter un fichier SQL exécute les scripts [dbpersonnes.sql] (exemple 28) et [dbrdvmedecins2.sql] (étude de cas).

Sous [Linux] ou [macOS], on installera [MySQL] ou [MariaDB] avec le gestionnaire de paquets du système, et l'on exécutera les scripts avec le client en ligne de commande [mysql] ([mysql -u root < database/dbrdvmedecins2.sql]). Le pilote [mysqlclient] et le moteur [MySQL] de [Django] fonctionnent avec les deux, sans aucun réglage. Sous [Linux], le compte [root] de [MariaDB] est souvent configuré pour ne se connecter que par le compte système [root] ([sudo mysql]) : on crée alors un utilisateur pour les applications :

sudo mysql -e "CREATE USER 'cours'@'localhost' IDENTIFIED BY 'cours'; GRANT ALL ON dbpersonnes.* TO 'cours'@'localhost'; GRANT ALL ON dbrdvmedecins2.* TO 'cours'@'localhost';"

et on l'indique aux applications : les clés [USER] et [PASSWORD] du réglage [DATABASES] pour l'exemple 28, les lignes [DB_USER=cours] et [DB_PASSWORD=cours] du fichier [.env] pour l'étude de cas.

13.5. Installation de curl

[curl] est livré avec [Windows] 10 et 11, [macOS] et la plupart des distributions [Linux]. Sous [PowerShell], il faut taper [curl.exe] et non [curl] : dans les anciennes versions de [PowerShell], [curl] est un alias d'une autre commande ([Invoke-WebRequest]), dont les options sont différentes. Dans l'invite de commandes de [Windows] ([cmd]), les guillemets d'une chaîne JSON s'écrivent [\"] (exemple 11), et une URL qui contient des [&] doit être entourée de guillemets doubles.

13.6. L'outil django-admin

[Django] installe une commande, [django-admin], qui n'est pas nécessaire pour suivre ce document (les exemples sont fournis tout prêts), mais que l'on utilise pour commencer un nouveau projet. Le fichier [manage.py] de chaque projet est un [django-admin] qui connaît en plus les réglages du projet : dans un projet, on tape [python manage.py] plutôt que [django-admin]. Les commandes les plus utiles :

django-admin startproject config .        # un nouveau projet, dont la configuration est le paquet config
python manage.py startapp pages           # une nouvelle application, le dossier pages
python manage.py runserver 8000           # le serveur de développement
python manage.py check                    # vérifier le projet (réglages, routes, modèles...)
python manage.py check --deploy           # vérifier les réglages de sécurité d'une mise en production
python manage.py shell                    # une console Python, avec Django chargé
python manage.py dbshell                  # le client de la base de données, avec les réglages du projet
python manage.py inspectdb                # écrire les modèles d'une base existante (à relire et corriger)
python manage.py makemessages -l en       # relever les textes à traduire (fichier .po)
python manage.py compilemessages          # compiler les dictionnaires (fichiers .mo)
python manage.py collectstatic            # rassembler les fichiers statiques pour la production
python manage.py diffsettings             # les réglages qui diffèrent des valeurs par défaut

Le point final de la commande [startproject] crée le projet dans le dossier courant (sans lui, dans un nouveau dossier [config]). Une application créée par [startapp] doit être ajoutée à la liste [INSTALLED_APPS] des réglages. La commande [inspectdb] est une aide précieuse pour une base existante, comme celle de l'étude de cas : elle lit les tables, et écrit un premier jet des modèles, avec [managed = False] ; il reste à nommer les relations, à choisir les types, et à ajouter les méthodes. Les commandes [makemigrations] et [migrate], qui créent et font évoluer les tables d'après les modèles, n'ont pas servi dans ce document : ses bases sont créées par des scripts SQL, partagés avec les autres versions de l'application.