Développement Python avec Eclipse et PyDev – Écrire et déboguer un programme (2)

Comment écrire, lancer et déboguer des programmes Python avec Eclipse et PyDev sous les distributions libres GNU/Linux ?

Cet article est la suite de l’article Introduction au Développement Python avec Eclipse et PyDev (1).

Maintenant que nous avons acquis les bases du langage de programmation interprété Python et configuré PyDev – le plugin Python – sous l’EDI (environnement de développement intégré) Eclipse, passons à l’écrire et au débogage d’un petit programme (script) Python.

2- RÉGLER quelques Préférences d’Eclipse

Avant de se lancer dans la programmation – l’écriture d’un script, nous pouvons peaufiner un peu les Préférences d’Eclipse pour l’adapter à notre goût et à notre écran.

Taille et Fonte de caractères de l’Éditeur et de la Console

Ils utilisent par défaut la fonte Monospace Regular 10 qui est bien trop petite même sur un écran 16/9ème de 24 pouces avec une résolution de 1920 x 1080.

Pour changer la fonte de caractères et/ou sa taille : Menu Eclipse -> Windows -> Preference -> General -> Appearence -> Colors and Fonts -> Structured Text Editor -> Structured Text Editor Text Font (…) -> bouton Edit Default… -> Dans la fenêtre qui s’ouvre, changez les paramètres selon vos besoins -> Cliquez sur Sélectionner, puis sur Apply and Close.

Langue de l’Interface

Par défaut Eclipse est en anglais que je garde tel quel comme tous les langages majeurs de programmation sont aussi en anglais. Pour ceux désirant avoir l’interface du logiciel en français il y a une solution proposée par Eclipse qui s’appelle Eclipse Babel Project Downloads. Visitez le lien précédent pour télécharger Babel Language Packs R0.15.1 for Oxygen et lisez la procédure d’installation.

Dictionnaire de l’Éditeur (Platform dictionary)

Par défaut Eclipse ne propose que Anglais (États-Unis) et Anglais (Royaume-Uni) ou None. Pour corriger dans l’Éditeur ses éventuelles fautes de frappe dans une autre langue, il faudra installer un Dictionnaire Utilisateur dans la langue appropriée. Celui-ci est un fichier texte ayant un seul mot par ligne.

Pour pointer vers le dictionnaire utilisateur : Menu Eclipse -> Windows -> Preference -> General -> Editors -> Text Editors -> Spelling -> User-defined dictionary -> bouton Browse… -> Choisir le fichier texte et valider par OK -> bouton Apply and Close.

3- ÉCRIRE un programme Python

Notre premier programme Python v.3.5.2 avec Eclipse Oxygen v.4.7.2 / PyDev v.6.2.0 sous Linux Mint 18.3

Comme souvent avec Eclipse, il y a plusieurs façons de faire les choses, à chacun la sienne. Prenons la méthode suivante…

Si ce n’est déjà fait, passez Eclipse en mode Workbench.
Menu Eclipse -> File -> New -> fenêtre PyDev Project -> Donnez un nom à Project name: (par exemple joe.hello.python) et gardez les autres paramètres par défaut comme ils ont déjà été configurés (voir article précédent – Introduction (1)) -> bouton Finish.
Menu Eclipse -> Window -> Perspective -> fenêtre Open Perspective -> Other… -> PyDev -> bouton Open. Une Perspective dans Eclipse correspond à la disposition par défaut des onglets/fenêtres par type d’EDI. Elle peut être réagencée par l’utilisateur et sauvegardée comme un nouveau modèle.
Onglet PyDev Package Explore -> Clic droit sur le nom du projet (ici joe.hello.python) -> New -> PyDev Module -> dans la fenêtre Create a new Python module, donnez un nom à Name (par exemple 1erModule, l’extension .py sera automatiquement ajoutée) -> bouton Finish. Dans la dernière fenêtre Template, laissez la sélection sur <Empty> -> bouton OK.

Et nous nous retrouvons avec l’onglet Éditeur qui affiche le contenu par défaut du fichier 1erModule.py tout juste créé.

1⊕'''
2 Created on 15 févr. 2018
3 
4 @author: joe linux rouen
5 '''
6

Pour ce script Python, en plus de la fonction intégrée print(éléments à afficher), nous allons créer une fonction utilisateur def nomfonction (paramètres): (n’oubliez pas les : à la fin) et utiliser une condition intégrée while condition logique: (n’oubliez pas les : à la fin) pour créer une boucle. Attention aux boucles sans fin !

Le cœur de notre petit programme est simple :
def table(nb, maxi): # nb = table de multiplication du nombre choisi, maxi = de 0, 1, 2 à 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'à fin de la boucle

Nous allons reprendre le script Python que nous avons utilisé dans le précédent article avec quelques modifications pour l’adapter à l’environnement Eclipse – PyDev. Vous pouvez copier-coller le script Python ci-dessous (en excluant les 2 lignes […]) directement dans l’éditeur PyDev d’Eclipse et l’adapter si nécessaire.

'''
Created on 15 févr. 2018
@author: joe linux rouen
'''
# Python ne tient pas compte des croisillons # qui précèdent les commentaires !
# Ce script est écrit avec l'Éditeur du plugin PyDev sous Eclipse et Linux Mint 18.3.
# Les lignes 8 et 9 indiquent au fichier '1erModule.py' le chemin absolu de l'interpréteur
# Python 3.5 sous Linux Mint 18.3 et l'encodage du texte.
# Dans le cas de Eclipse/PyDev, ils ne sont pas vraiment nécessaires !
#!/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): # DÉBUT du programme
    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
# POUR LANCER CE SCRIPT en 2 étapes :
#   le curseur étant dans l'Éditeur, pressez CTRL+ALT+ENTER puis choisissez
#   la Console à utiliser, et à nouveau dans l'Éditeur CRTL+ALT+ENTER.
#   La Console attend maintenant vos entrées de table...
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.
\n 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 fermer le programme, cliquez dans la Console sur le Bouton rouge ci-dessus (Terminate current console).')
# FIN du programme

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 !

Une fois le script dans l’éditeur, le programme Python reprendra ses bonnes couleurs !

4- LANCER le programme Python

Comme souvent avec Eclipse, il y a toujours plusieurs façons de faire les choses, à chacun la sienne. Prenons la méthode suivante…

Pour lancer ce script, 2 étapes

  • Pour lancer l’interpréteur Python : le curseur étant dans l’Éditeur, pressez la combinaison de touches CTRL + ALT + ENTER puis choisissez la Console à utiliser, et
  • Pour lancer le script Python : à nouveau le curseur dans l’Éditeur, faites CRTL + ALT + ENTER.
  • La Console PyDev >>> attend maintenant vos entrées de table de multiplication…

Si tout se déroule sans aucun problème, nous obtenons ceci à l’écran.

Notre premier programme Python v.3.5.2 avec Eclipse Oxygen v.4.7.2 / PyDev v.6.2.0 sous Linux Mint 18.3

Astuce pour avoir le Retour à la ligne automatique du texte
  • Éditeur : Menu Eclipse -> Window -> Editor -> Toggle Word Wrap.
  • Console : Cliquez sur l’icône Toggles word-wrap in console.

5- DÉBOGUER le programme Python

Nous allons ajouter un point d’arrêt (breakpoint), la base du débogage, dans notre script Python pour le déboguer si nécessaire. Comme toujours il y a plusieurs façons de réaliser cette action, à chacun la sienne. Prenons la méthode suivante…

Dans l’éditeur Python ->  À l’endroit désiré du script, faites un double-clic dans la colonne à gauche du code source (pas dedans) -> Le point d’arrêt se matérialise par une icône verte (du genre Ο) dans cette même colonne.

En étant dans l’éditeur, pour lancer le débogage, pressez la combinaison des touches MAJ + F9.

Eclipse – PyDev : débogage du script Python 1erModule.py (MAJ + F9)

Ici pas de mauvaise surprise : nous n’avons aucun problème avec le programme Python lui-même !

Le seul souci semblerait être :
Warning: Debugger speedups using cython not found.
Run '"/usr/bin/python3.5" "/home/joe/.p2/pool/plugins/org.python.pydev_6.2.0.201711281614/pysrc/setup_cython.py" build_ext --inplace' to build.

PyDev nous attire l’attention que nous pourrions accélérer le débogage, comme d’ailleurs l’exécution du programme, en utilisant Cython qui n’est pas installé et il nous indique comment le faire depuis un Terminal GNU/Linux. Pour des ordinateurs récents, il n’y a pas de réelle utilité à installer Cython, à moins d’écrire des programmes très complexes.
Cython est un langage de programmation et un compilateur qui simplifient l’écriture d’extensions compilées pour Python. La syntaxe du langage est très similaire à Python mais il supporte en plus un sous-ensemble du langage C/C++ (déclarations de variables, appel de fonctions, …). Le premier intérêt de Cython est qu’il produit du code nettement plus performant.

Pour des scripts plus complexes que le programme que nous avons utilisé, en cas d’erreurs d’exécution, il faudra insérer plusieurs points d’arrêt afin d’inspecter la-les causes du-des problèmes et corriger le code source en conséquence.

À vous maintenant de vous faire plaisir en programmant en Python sous Eclipse – Pydev.
N’oubliez pas de consulter les diverses documentations qui sont à votre disposition sur Internet…
Ainsi que le précédent article Introduction au Développement Python avec Eclipse et PyDev (1)…