Développement Python avec l’EDI IDLE

IDLE est l’Environnement de développement intégré (EDI) multiplate-forme d’origine du langage libre interprété Python créé par Guido van Rossum

IDLE n’est pas inclus par défaut dans le paquet libre Python de nombreuses distributions GNU/Linux. Il est intégralement écrit avec Python et la bibliothèque graphique Tkinter.

IDLE signifie « Integrated Development and Learning Environment » (Environnement de développement et d’apprentissage intégré).

Les principales caractéristiques de IDLE sont :
  • EDI plutôt facile à prendre en main même pour des débutants en programmation Python
  • Codé en Python pur à 100% et utilisant Tkinter, la boîte à outils d’interface graphique
  • Multi-plateforme : fonctionne essentiellement de la même manière sur les sytèmes d’exploitation GNU/Linux, macOS, Unix et Windows
  • Éditeur de texte multi-fenêtre avec annulation multiple, colorisation syntaxique Python, indentation intelligente, astuces d’appel, complétion automatique et autres fonctionnalités
  • Fenêtre Shell Python (interpréteur interactif) avec colorisation syntaxique Python des messages d’entrée, de sortie et d’erreur du code
  • Recherche dans n’importe quelle fenêtre, remplacement dans les fenêtres de l’éditeur et recherche dans plusieurs fichiers (grep)
  • Débogueur intégré avec points d’arrêt persistants, pas à pas et affichage des espaces de noms globaux et locaux

Pour mémoire : Un interpréteur se distingue d’un compilateur par le fait que, pour exécuter un programme, les opérations d’analyse et de traductions sont réalisées à chaque exécution du programme par un interpréteur, ici Python, plutôt qu’une fois pour toute par un compilateur.
Un langage compilé est, avant de pouvoir l’exécuter, traduit en langage machine (binaire) par un compilateur. Le langage interprété, ici Python, est lui traduit en quelque sorte au fur et à mesure de l’exécution du programme par l’interpréteur, d’où un gain de temps et une souplesse de développement appréciables.

Tkinter (Tool kit interface) est la bibliothèque graphique libre d’origine pour le langage Python, permettant la création d’interfaces graphiques.

Cette bibliothèque peut être utilisée dans les scripts Python, et cela indépendamment de IDLE.
IDLE, parmi un certain nombre d’autres EDI, est une alternative plus compète que le couple par défaut Éditeur de texte / Terminal (idéal pour débuter) des distributions GNU/Linux mais beaucoup plus simple d’utilisation que le couple Eclipse / PyDev (idéal pour des gros programmes). En fonction de ses besoins et connaissances, chaque programmeur Python pourra choisir à un instant T la solution qui lui convient le mieux.

♦ Installation de IDLE sous Linux MINT 18.3 LTS (et aussi Ubuntu 16.04.x LTS, variantes et dérivées)

Comme nous l’avons vu dans un précédent article Développement Python avec Eclipse et PyDev – Introduction (1), sous la distribution Linux Mint 18.3 LTS, comme sous Ubuntu 16.04.3 LTS et ses variantes-dérivées, Python est normalement installé par défaut en deux versions, la 2.7.12 (en voie d’obsolescence) et la 3.5.2 (à choisir pour de nouveaux développements).
De ce fait, Python est directement utilisable depuis un Terminal (CTRL + ALT + T), voir Interprète (informatique). En tapant python ou python2 ou python3 dans un Terminal, nous lançons directement la console (shell) Python v.2 ou v.3. L’invite du Terminal passe alors de joe@joe-mint18 ~ $ python3 (dans mon cas) aux 3 chevrons >>> qui indiquent que Python 2.7 ou 3.5 est prêt à travailler.

Il y a aussi plusieurs versions de IDLE disponibles dans le Gestionnaire de logiciels (Logithèque) de Linux Mint 18.3 LTS 64-bits, comme d’ailleurs d’Ubuntu 16.04.3 LTS. Pour de nouveaux développements, je vous suggère d’installer Idle-python3.5 depuis la Logithèque. Si Tkinter n’est pas installé, le système devrait vous proposer d’installer aussi la dépendance Python3-tk, sinon le faire.

Python’s IDLE : Installation de Idle-python3.5 et Python3-tk sous Linux MINT 18.3 LTS

♦ Utilisation de IDLE pour développer des scripts Python

Une fois IDLE et Tkinter installés, une entrée IDLE (using Python-3.5) est automatiquement ajoutée au Menu MINT -> Programmation. Il suffit de cliquer dessus pour lancer IDLE.
IDLE s’ouvre en mode Open Shell Windows, la console interactive Python. Pour changer ce comportement par défaut, comme d’autres réglages de l’EDI : Menu IDLE ->  Options -> Configure IDLE -> Onglet General -> Basculer At Startup de Open Shell Windows vers Open Edit Windows (l’éditeur de texte) -> boutons Apply/OK.
Pour vous familiariser avec le fonctionnement et les possibilités IDLE 3.5, consultez sa documentation officielle (en anglais) sur le site de Python.

Nous allons reprendre le script Python TabledeMultiplication.py que nous avons utilisé dans les deux précédents articles consacrés à Python avec quelques modifications pour l’adapter à l’environnement IDLE. Vous pouvez copier-coller le script Python ci-dessous (en excluant les 2 lignes […]) directement dans l’éditeur de texte de IDLE et l’adapter si nécessaire.

# Les croisillons # précèdent les commentaires et Python n'en tient pas compte !
# Ce script est écrit avec l'Éditeur de texte de IDLE sous Linux Mint 18.3.
# Les 2 lignes suivantes indiquent au fichier 'TableDeMultiplication-IDLE.py' le chemin
#   absolu de l'interpréteur Python 3.5 sous Linux Mint 18.3 et l'encodage du texte.
# Ces 2 lignes doivent se trouver tout au début du script Python (partie code) !
#!/usr/bin/python3.5 # Ici un cas particulier du # et Python le prend en compte !
# -*-coding:UTF-8 -* # Ici un cas particulier du # et Python le prend en compte !
# FONCTION Utilisateur calculant la Table de Multiplication par nb de 1*nb à maxi*nb
def table(nb, maxi):
   i = 0 # Le compteur i avec valeur 0 au départ
   while i < maxi: # Tant que i est strictement inférieur à la variable maxi
      print(i + 1, '*', nb, '=', (i + 1) * nb) # Pour afficher le résultat des calculs
      i += 1 # Incrémentation i de 1 à chaque tour de boucle jusqu'à maxi.
# POUR LANCER CE SCRIPT: en étant dans l'Éditeur de texte IDLE -F5 ou Run -Run Module.
# La Console Python s'ouvre, affiche la version de Python, le contenu de print(), puis les 3 chevrons.
print('- Lorsque vous verrez ci-dessous les 3 chevrons de Python, entrez votre table de multiplication
sous la forme table(nb, maxi) et validez par Entrée.
Par exemple table(76, 10) va vous afficher la table des 76, de 1x76=76 jusqu'à 10x76=760.
\n- À chaque apparition des 3 chevrons vous pouvez recommencer avec une nouvelle table.
\n- Pour quitter seulement la console Python tapez après les 3 chevrons: quit() et validez par Entrée.')
# À vous de jouer avec le code Python !

Nota bene : Le passage de WordPress 4.9.9 à 5.0+ (changement de paradigme) a déstructuré le code ci-dessus. Il a fallu le reprendre pour l’adapter aux nouvelles règles de ce CMS !

En étant dans l’Éditeur de texte de IDLE

  • Pour lancer ce script Python -> touche F5 ou Menu Run -> Run Module.

La Console Python s’ouvre, affiche la version de Python, le contenu du dernier message print(), puis les 3 chevrons >>> de l’interpréteur Python.
Lorsque vous verrez les 3 >>>, entrez votre table de multiplication sous la forme table(nb, maxi) et validez par la touche Entrée. À chaque apparition des 3 >>> vous pouvez recommencer avec une nouvelle table.
Pour quitter seulement la console Python sans fermer en même temps l’éditeur de texte, tapez quit() après les 3 >>> et validez par Entrée.

Si tout se déroule sans aucun problème, nous obtenons à l’écran les deux fenêtres Éditeur de texte et Console Python de IDLE (mises côte à côte).

Notre premier programme Python v.3.5.2 avec l’EDI – IDLE v.3.5.2 – sous Linux Mint 18.3 LTS

Nota bene : Les menus de IDLE changent dynamiquement en fonction de la fenêtre actuellement sélectionnée, Éditeur de texte ou Shell Python.

Pour plus de détails, consultez :

  • IDLE 3.5 Official Documentation (en anglais) – DocsPython.org
    IDLE is Python’s Integrated Development and Learning Environment.
  • IDLE 2.7 Présentation rapide – Developpez.com 29/08/2014
    Petite présentation rapide du logiciel IDLE basée sur la version IDLE2 pour Python2, sachant toutefois que vous pouvez aisément tout transposer pour IDLE3 (Python3), les fonctionnalités étant presque les mêmes d’une version à l’autre.
  • Python 3.5 Tutoriel officiel – DocsPython.org
    Ce tutoriel introduit au lecteur, de façon informelle, les concepts de base ainsi que les fonctionnalités du langage Python et de son écosystème. Il aide à prendre en main l’interpréteur Python pour une utilisation sur des cas et exemples pratiques. Son ambition n’est pas d’être exhaustif et de couvrir chaque fonctionnalité, ni même toutes les fonctionnalités les plus utilisées. Il cherche, par contre, à introduire plusieurs des fonctionnalités les plus notables et à vous donner une bonne idée de la saveur et du style du langage. Après l’avoir lu, vous serez capable de lire et d’écrire des modules et des programmes Python et vous serez prêt à en apprendre d’avantage sur les modules de la bibliothèque Python décrits dans The Python Standard Library.
  • Python 3 Cheat Sheet – Perso.Limsi.fr 2015
    Ce document résume en 2 pages les éléments essentiels de la syntaxe du langage Python. Avec la version 3.x, le langage a introduit quelques changements importants. Il est préférable de choisir la version 3.x plutôt que 2.x. Outre le fait qu’elle contient les dernières évolutions, elle est beaucoup plus cohérente en ce qui concerne les chaînes de caractères.

Menu Run – uniquement fenêtre Éditeur de texte

  • Python Shell : Ouvrir ou réveiller la fenêtre Shell Python.
  • Check Module (ALT + X) : Vérifie la syntaxe du module actuellement ouvert dans la fenêtre de l’Éditeur. Si le module n’a pas été enregistré, IDLE invitera l’utilisateur à enregistrer ou à enregistrer automatiquement le fichier, comme sélectionné dans l’onglet General de la boîte de dialogue de IDLE Settings (Option -> Configure IDLE -> fenêtre Settings -> General -> Autosave Preferences). S’il y a une erreur de syntaxe, l’emplacement approximatif est indiqué dans la fenêtre de l’éditeur. Corrigez l’erreur et relancez la vérification.
  • Run Module (F5) : Vérifiez d’abord la bonne syntaxe du module (voir ci-dessus). Si aucune erreur ne survient, redémarrez le Shell Python (voir ci-dessus) pour nettoyer l’environnement, puis exécutez le module. Notez que la sortie nécessite l’utilisation de print() ou write() dans votre code source. Une fois l’exécution terminée, le Shell Python conserve le focus et affiche l’invite classique >>>. À ce stade, on peut explorer de manière interactive le résultat de l’exécution. Ceci est similaire à l’exécution de la ligne de commande python3.5 -i /chemin/nom-fichier.py dans un Terminal pour un fichier Python déjà enregistré.

Menu Debug – uniquement fenêtre Shell Python

  • Go to File/Line : Regarde sur la ligne actuelle où est le curseur, et la ligne au-dessus pour un nom de fichier et un numéro de ligne. Si trouvé, ouvre le fichier s’il n’est pas déjà ouvert et affiche la ligne. Utilisez-le pour afficher les lignes sources référencées dans une trace d’exception et les lignes trouvées par Find in Files. Également disponible dans le menu contextuel de la fenêtre Shell et des fenêtres Ouput.
  • Debugger (bascule) : Lorsqu’il est activé, le code entré dans le Shell ou exécuté à partir de l’Éditeur s’exécutera sous le débogueur. Dans l’Éditeur, les points d’arrêt (breakpoints) peuvent être définis avec le menu contextuel. Cette fonctionnalité est encore incomplète et quelque peu expérimentale.
  • Stack Viewer : Affiche la trace de la pile de la dernière exception dans un widget d’arborescence, avec accès aux variables locales et globales.
  • Auto-open Stack Viewer : Bascule automatiquement l’ouverture de la visionneuse de pile sur une exception non gérée.

Menus Context

Pour ouvrir un menu contextuel, faites un clic droit avec la souris dans une fenêtre. Les menus contextuels disposent également des fonctions standards du presse-papier disponibles dans le menu Edit.
Les fenêtres de l’Éditeur ont également des fonctions de point d’arrêt (breakpoints). Les lignes avec un ensemble de points d’arrêt sont spécialement marquées et visualisées à l’écran avec par défaut une couleur jaune d’arrière plan. Les points d’arrêt ont uniquement un effet lorsqu’ils s’exécutent sous le débogueur (debugger). Les points d’arrêt d’un fichier sont enregistrés dans le répertoire .idlerc de l’utilisateur.

  • Set Breakpoint : Définit un point d’arrêt sur la ligne actuelle.
  • Clear Breakpoint : Efface le point d’arrêt sur cette ligne.
  • Fenêtres Shell et Output intègre aussi Go to File/Line : Identique au menu Debug.

♦ Alors, quel EDI Python choisir ?

Nous avons le choix parmi de nombreux EDI Python, avec une bonne douzaine de candidats majeurs sous licences libres ou open source. Consultez le Python Editors Table sur le Wiki de Python.org ainsi que l’article Comparison of Integrated development environments (IDE) sur Wikipedia.org.

Pour débuter en programmation Python sous les systèmes d’exploitation GNU/Linux, je vous suggère d’utiliser le couple installé par défaut sur votre distribution : l’Éditeur de texte (Xed pour Linux Mint) avec coloration syntaxique Python pour écrire votre code source et le Terminal (Gnome pour Linux Mint) qui se transformera en Shell Python pour exécuter vos programmes.

Quand vous vous voudrez monter en puissance étape par étape, passez à l’utilisation d’un vrai EDI (environnement de développement intégré), simple comme ici IDLE de Python -ou- plus complet mais aussi (beaucoup) plus difficile à prendre en main comme PyCharm-Community (v.2017.3 en paquet Flatpak) qui est maintenant disponible dans la Logithèque de Linux Mint 18.3 (ainsi que dans celle d’Ubuntu 16.04.x).

Pour des programmes complexes et/ou avec des bases de données, l’utilisation d’un puissant EDI comme Eclipse + plugin PyDev (Python) deviendra vite nécessaire. De plus, Eclipse permet aussi le développement de programmes en utilisant d’autres langages de programmation que Python, dont C – C# – C++ – Cobol – HTML – Java – JavaScript – Pascal – Perl (EPIC) – PHP (PDT) – Ruby – SQL – XML – XUL – etc.