IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Introduction à Python 3 et au framework web Flask par l'exemple


précédentsommairesuivant

2. Installation d'un environnement de travail

2-1. Python 3.8.1

Les exemples de ce document ont été testés avec l'interpréteur Python 3.8.1 disponible à l'URL https://www.python.org/downloads/ (fév 2020) sur une machine Windows 10 :

Image non disponible

L'installation de Python donne naissance à l'arborescence de fichiers [1] et au menu [2] dans la liste des programmes :

Image non disponible
  • [3-4] : deux interpréteurs Python interactifs ;

  • [5] : la documentation Python ;

  • [6] : la documentation des modules Python ;

Nous n'utiliserons pas l'interpréteur Python interactif. Il faut simplement savoir que les scripts de ce document pourraient être exécutés avec cet interpréteur. Pratique pour tester le fonctionnement d'une fonctionnalité Python, il l'est peu pour des scripts devant être réutilisés. Voici un exemple avec l'option [4] ci-dessus :

Image non disponible

Le prompt >>> permet d'émettre une instruction Python qui est immédiatement exécutée. Le code tapé ci-dessus a la signification suivante :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
>>> nom="tintin"
>>> print("nom=%s" % nom)
nom=tintin
>>> print("type=%s" % type(nom))
type=<class 'str'>
>>>

Lignes :

  • 1 : initialisation d'une variable. En Python, on ne déclare pas le type des variables. Celles-ci ont automatiquement le type de la valeur qu'on leur affecte. Ce type peut changer au cours du temps ;

  • 2 : affichage du nom. 'nom=%s' est un format d'affichage où %s est un paramètre formel désignant une chaîne de caractères. nom est le paramètre effectif qui sera affiché à la place de %s ;

  • 3 : le résultat de l'affichage ;

  • 4 : l'affichage du type de la variable nom ;

  • 5 : la variable nom est ici de type class. Avec Python 2.7 elle aurait la valeur <type 'str'> ;

Maintenant, ouvrons une console Windows :

Image non disponible

Le fait qu'on ait pu taper [python] en [1] et que l'exécutable [python.exe] ait été trouvé montre que celui-ci est dans le PATH de la machine Windows. C'est important car cela signifie que les outils de développement Python sauront trouver l'interpréteur Python. On peut le vérifier ainsi :

Image non disponible
  • en [2], on quitte l'interpréteur Python ;

  • en [3], la commande qui affiche le PATH des exécutables de la machine Windows ;

  • en [4], on voit que le dossier de l'interpréteur Python 3.8 fait partie du PATH ;

2-2. L'IDE PyCharm Community

2-2-1. Introduction

Pour construire et exécuter les scripts de ce document, nous avons utilisé l'éditeur [PyCharm] édition Community disponible (fév 2020) à l'URL https://www.jetbrains.com/fr-fr/pycharm/download/#section=windows :

Image non disponible

Téléchargez l'IDE PyCharm Community [1-3] et installez-le.

Lançons l'IDE PyCharm puis créons un premier projet Python :

Image non disponible
Image non disponible
  • en [2-4], créez un nouveau projet ;

L'IDE PyCharm présente le projet créé sous la forme suivante :

Image non disponible
  • en [2-3], examinons les propriétés de l'IDE ;

Image non disponible
  • en [4], l'interpréteur Python qui sera utilisé pour le projet ;

  • en [5], une liste déroulante des interpréteurs disponibles ;

  • en [6], on choisit l'interpréteur téléchargé au paragraphe Python 3.8.1 ;

Image non disponible
  • en [7], l'interpréteur choisi ;

  • en [8], la liste des packages disponibles avec cet interpréteur. Les packages contiennent des modules que les scripts Python peuvent utiliser. Il existe des centaines de modules disponibles ;

Commençons par créer un dossier dans lequel nous mettrons notre premier script Python :

Image non disponible
  • cliquer droit sur le projet, puis [1-2] pour créer un dossier ;

  • en [3], tapez le nom du dossier : il sera créé dans le dossier du projet ;

Puis créons un script Python :

Image non disponible
  • cliquer droit sur le dossier [bases], puis [1-3] ;

  • en [4-5], indiquez le nom du script ;

Écrivons notre premier script :

Image non disponible
  • en [3], nous écrivons le script suivant :

    • lignes 1, 3 : les commentaires commencent avec le signe # ;

    • ligne 2 : initialisation d'une variable. Python ne déclare pas le type de ses variables ;

    • ligne 4 : affichage écran. La syntaxe utilisée ici est [format % données] avec :

      • format : nom=%s où %s désigne l'emplacement d'une chaîne de caractères. Celle-ci sera trouvée dans la partie [données] de l'expression ;

      • données : la valeur de la variable [nom] viendra remplacer le format %s dans la chaîne de format ;

  • avec [4-5], on reformate le code selon les recommandations de l'organisme gérant Python ;

Le script est exécuté avec un clic droit sur le code [6] :

Image non disponible
  • en [7], la commande exécutée ;

  • en [8], le résultat de l'exécution ;

Pour exécuter le script du document, téléchargez le code à l'URL https://tahe.developpez.com/tutoriels-cours/python-flask-2020/documents/python-flask-2020.rar puis dans PyCharm procédez comme suit :

Image non disponible
  • en [1-2], ouverture d'un projet existant : désigner le dossier du code téléchargé ;

  • en [3], le projet ouvert ;

  • en [4-5], exécution de l'un des scripts du projet ;

Image non disponible
  • en [7-8], les résultats de l'exécution ;

2-2-2. Environnement virtuel d’exécution

Notre environnement de travail est désormais opérationnel. Nous allons cependant le modifier pour écrire les scripts de ce cours. Tout d’abord, modifions la configuration de Pycharm :

Image non disponible

Dans la fenêtre de droite :

  • par défaut, la case [1] est cochée. On la décoche pour que Pycharm n’ouvre pas par défaut le dernier projet ouvert mais nous laisse choisir celui qu’il faut ouvrir ;

  • en [2], on ne confirme pas la sortie de Pycharm lorsqu’on ferme la fenêtre de l’application ;

  • en [3], on ouvre les nouveaux projets dans une autre fenêtre ;

  • en [4], si on ferme Pycharm et qu’un programme est en cours d’exécution, celui-ci est arrêté ;

Fermons maintenant Pycharm puis rouvrons-le :

Image non disponible
  • en [1], on crée un nouveau projet ;

  • en [2], indiquer le dossier du projet ;

  • en [3], prendre un environnement virtuel. Un environnement virtuel est propre au projet que l’on crée. Il ne se mélange pas avec les environnements virtuels d’autres projets. Un projet Python / Flask utilise de nombreuses bibliothèques externes qu’il faut installer. Un projet P1 peut utiliser une bibliothèque B dans sa version v1 et un projet P2 utiliser la même bibliothèque B mais dans sa version v2. Ces deux versions peuvent être plus ou moins compatibles. Or lorsqu’on installe une bibliothèque dans sa version v2 et qu’une version v1 est déjà installée, celle-ci est écrasée par la version v2. Cela peut être problématique pour le projet qui utilisait la version v1 si la nouvelle version v2 n’est pas totalement compatible avec la version v1. Pour éviter ces problèmes, on isole chaque projet dans un environnement virtuel ;

  • en [4], désigner le dossier où seront rangées les bibliothèques python qui seront téléchargées au cours du projet. Nous avons choisi ici un dossier [venv] (virtual environment) à l’intérieur du dossier du projet. Rien n’oblige à faire cela ;

  • en [5], l’interpréteur Python du projet. C’est celui que nous avons installé dans l’étape précédente ;

  • en [6], créer le projet ;

Image non disponible
  • en [7-8], le projet créé ;

  • en [9], l’environnement d’exécution du projet, appelé environnement virtuel ;

  • en [10], le dossier [site-packages] est le dossier dans lequel seront rangées les bibliothèques téléchargées ultérieurement ;

2-2-3. Git

Ensuite, on active un logiciel de contrôle du code source. Ce sera ici Git [1-4] :

Image non disponible

Un logiciel de contrôle du code source (VCS : Version Control System) permet de suivre les évolutions d’un projet. On peut prendre des photos, par une opération appelée commit, du projet à différents moments de sa vie. Si on fait deux commit aux temps T et T+1, le VCS permet de connaître ce qui a changé entre les deux versions commitées. Normalement le VCS est utilisé par une équipe de développeurs. Ceux-ci font des commit de leur code lorsque celui-ci a été dûment testé. A partir du VCS, les autres développeurs peuvent récupérer ce code validé et l’utiliser.

Ici, il n’y a qu’un développeur. L’expérience montre qu’on peut avoir une application qui marche au temps T et ne marche plus au temps T+1. On voudrait bien alors revenir en arrière au temps T pour repartir de zéro. Le VCS permet cela et c’est pour cette raison que l’on va l’utiliser ici.

Nous montrons comment procéder avec Git.

Image non disponible
  • en [1], sélectionner l’onglet [Git] (en bas à gauche) ;

  • en [2], on voit qu’il y a 495 fichiers du projet qui ne sont pas versionnés par Git. Cela veut dire qu’ils ne feront pas partie des photos du projet, lors des commit ;

  • en [3], le bouton du [commit] ou bouton de validation du projet. Comme il a été dit, Git prend alors une photo du projet et la stocke dans un dossier [.git] à la racine du projet (non affiché par Pycharm mais visible dans l’explorateur windows) ;

Validons [3] le projet dans son état actuel.

  • en [4], la liste des fichiers non versionnés ;

  • en [5], la totalité de ces fichiers non versionnés sont ceux de l’environnement virtuel [venv] ;

  • en [6], tout commit doit s’accompagner d’un message. Le développeur met ici les modifications amenées par la version qui va être commitée vis-à-vis de la dernière version commitée ;

Certains dossiers ou fichiers peuvent être ignorés par Git. Ils ne font alors jamais partie de la photo. En [5] ci-dessus, cliquons droit sur le dossier [venv].

  • en [1-3], on indique que le dossier [venv] ne doit pas faire partie des photos de Git. La liste des dossiers et fichiers ignorés par Git sont mis dans un fichier appelé [.gitignore] [4] ;

Image non disponible
Image non disponible
  • après l’opération précédente, tous les fichiers du dossier [venv] disparaissent de la liste des fichiers non versionnés. Ne reste plus que le fichier [.gitignore] qui vient d’être créé ;

  • en [5], nous le sélectionnons pour qu’il soit sauvegardé ;

  • en [6], on crée un message de commit :

  • en [7], on valide. La photo du projet est alors prise ;

Image non disponible
  • en [8-9], le contenu du fichier [.gitignore] : une seule ligne avec le nom du dossier [/venv] qui indique que son contenu doit être ignoré dans les photos ;

Montrons maintenant à quoi peut nous servir Git. Tout d’abord, nous créons un dossier [git] (vous pouvez utiliser tout autre nom – il pourra être détruit à la fin de la démonstration) :

Image non disponible
  • en [1-5], on crée un dossier [git] ;

    Image non disponible
  • en [6-10], on crée un script Python [git_01] ;

    Image non disponible
  • en [11-12], le script ne contient qu’un commentaire ;

  • en [13-14], on crée une copie de [git_01]. Pour cela, sélectionner [git_01] et faire Ctrl-C (Copier) puis (Ctrl-V) (Coller) et indiquer [git_02] comme nom de fichier ;

Image non disponible

Maintenant, committons notre projet. Une photo va être prise avec les deux fichiers [git_01, git_02] ;

Image non disponible
  • en [1-3], on committe le projet ;

  • en [4], on sélectionne les fichiers non versionnés qu’on veut committer, ici tous ;

  • en [5], on met le message identifiant le commit ;

  • en [6], on valide ;

Image non disponible
  • en [1-2], confirmation du commit ;

  • en [3], on sélectionne l’onglet [Log] ;

  • en [4], une vue des branches du projet. Ici, une seule branche appelée [master] ;

  • en [5-6], le commit qui vient d’être effectué ;

Maintenant créons de la même façon un script [git_03] :

Image non disponible

Modifions le script [git_02] et supprimons le script [git_01] :

Image non disponible

Puis committons la nouvelle version :

Image non disponible

Maintenant nous avons deux commits dans les logs :

Image non disponible

Lorsqu’on sélectionne un commit particulier, apparaît sur sa droite l’arbre des fichiers du projet :

Image non disponible

Maintenant supposons que le dernier commit nous ait amenés à une impasse et que l’on voudrait revenir à une situation correspondant à l’un des commit précédents :

Image non disponible
  • en [1-2], on sélectionne le commit dans l’état duquel on veut revenir ;

  • en [3-5], existent plusieurs modes de reset. Nous choisissons le mode [hard] qui revient à l’état sélectionné en perdant les changements qui ont été faits depuis ;

Image non disponible
  • en [6], on a récupéré [git_01] qui avait été supprimé ;

  • en [7-8], on retrouve [git_02] dans son état original sans la modification qui avait été faite ;

Maintenant, modifions [git_02] et ajoutons [git_03] [1-4] :

Image non disponible

Maintenant, refaisons l’opération de revenir au commit initial :

Image non disponible
  • en [1-4], on revient à la photo du commit n° 1 ;

  • en [5-6], on prend l’option [Keep] au lieu de [Hard]. Ces options ne sont pas simples à comprendre. Aussi faut-il les essayer :

    Image non disponible
    Image non disponible
  • en [1], le fichier [git_03] est toujours là ;

  • en [2-3], le fichier [git_02] a gardé ses modifications ;

Difficile de dire ce qu’a fait ce [Revert Commit]. Maintenant committons la situation actuelle :

Image non disponible
  • en [1-6], le commit ;

    Image non disponible
  • en [9], on voit le nouveau commit ;

Maintenant, essayons de revenir au commit 1 comme il a déjà été fait :

Image non disponible
Image non disponible
  • en [1-6], on revient au commit n° 1 en mode [Hard] ;

    Image non disponible
  • en [7-8], on a cette fois bien perdu toutes les modifications faites depuis le 1er commit ;

Dans la suite, nous ne reviendrons plus sur [Git]. Le lecteur pourra travailler de la façon suivante :

  • il pourra suivre les exemples qui sont donnés soit en les tapant lui-même, soit en les récupérant sur le site du cours ;

  • à chaque fois qu’un exemple fonctionne, il pourra committer son projet ;

  • lorsqu’il développe ses propres codes et qu’il est dans une impasse, il sait qu’il peut revenir à une situation stable, en revenant à un commit précédent ;

2-3. Conventions d’écriture du code Python

On peut écrire du code Python sans conventions d’écriture et ça ne l’empêchera pas de fonctionner. Mais il pourrait ne pas être apprécié de la communauté Python qui a édicté des conventions d’écriture. Celles-ci sont résumées dans un Post à l’adresse https://stackoverflow.com/questions/159720/what-is-the-naming-convention-in-python-for-variable-and-function-names :

Image non disponible
  • le nom d’un module (module_name) suit une convention appelée parfois [snake_case] : tout en minuscules comportant éventuellement des mots séparés par le caractère souligné. Cette convention [snake_case] s’applique aux noms de méthodes, de packages, de variables, de fonctions ;

  • le nom d’une classe (ClassName) suit une convention appelée parfois [PascalCase] : une suite de mots collés avec chaque lettre de début de mot en majuscule ;

  • les noms de constantes suivent la convention [SNAKE_CASE] : suite de mots en majuscules séparés par le caractère souligné ;

Ces conventions ont été globalement suivies dans ce document. Néanmoins pour les modules définissant une classe, j’ai donné au module le même nom que la classe qu’il contient. Il suit donc la convention [PascalCase] au lieu de [snake_case]. Je voulais pouvoir repérer rapidement les modules de classes.


précédentsommairesuivant

Licence Creative Commons
Le contenu de cet article est rédigé par Serge Tahé et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2020 Developpez.com.