Les éditeurs de programmation c’est comme les couleurs, au goût de chacun(e) avec des arguments plus ou moins objectifs. Mes critères c’est qu’ils marchent sous Windows et Ubuntu/Linux, qu’ils soient freeware, régulièrement maintenus, de source fiable, qu’il existe de la documentation pour le paramétrage, que je sois productif avec, que je ne me perde pas dans les méandres de configurations géniales mais parfois trop compliquées.
Mais dans tous les cas, il y a toujours du paramétrage à faire pour que tout marche, car l’objectif est 1) d’écrire du code, 2) de le lancer depuis l’éditeur avec affichage dans une console (émulant ou vrai terminal) et 3) si erreurs marquage dans le code à différent niveaux (ligne d’erreur ou ligne concernée dans un autre module provoquant l’erreur, avec tous les niveaux d’imbrication). On peut ajouter ensuite d’autres fonctionnalités comme l’analyse du code, du profilage … mais l’essentiel est la. Je donne ici quelques exemples pour des IDEs qui sont aliasés dans les scripts setvars.
Article mis à jour en Janvier 2025.
Navigation dans le guide
Guide [ Installation de Python sous Win-x64 ]
1. Geany
On peut l’utiliser sous Windows, à partir du site on télécharge et on installe geany-x_setup.exe et geany-plugins-x_setup.exe ou x correspond à la version courante (ex: 2.0).
L’installeur va également installer un runtime GTK 3.
On utilise le thème par défaut, des thèmes sombres sont incorporés (menu Affichage > Changer le jeu de couleurs) mais ils se limitent à la fenêtre de code.
Configuration
Il faut configurer le système de compilation pour Python 3.
Si Geany est installé dans C:\Program Files\Geany\bin il faut un alias qui corresponde dans le script setvars.bat :
|
1 2 |
doskey geany="C:\Program Files\Geany\bin\geany.exe" echo alias: 'geany' for Geany editor |
Puis aller dans Editer > Préférences :
| Section | Onglet | Paramètre | Changer |
| Général | Démarrage | Fichiers de projet | c:\Dev |
Il faut aussi aller dans Construire > Editer les commandes de construction :
| Paramètre | Valeur |
| Compile | python -m py_compile "%f" |
| Execute | python "%f" |
| Lint | pycodestyle --max-line-length=80 "%f" |
| Erreurs | (.+):([0-9]+):([0-9]+) |
Pour utiliser le lint, il faut installer le paquetage pycodestyle que l’on peut installer avec conda (préféré) ou pip :
#pip install pycodestyle#pip install --upgrade pycodestyle#pip uninstall pycodestyleconda install pycodestyle |
Dans ces conditions Geany est fonctionnel (compile, lint, execute).
Limitations
Geany est fonctionnel s’il est lancé à partir d’un CLI doté des bonnes variables d’environnement.
Mais contrairement à la version Ubuntu, il ne dispose pas du terminal intégré, le programme Python est lancé dans un terminal autonome. Ce qui est embêtant pour faire défiler les erreurs Python (même si elles sont bien détectées).
Liens et lectures
- Geany [ https://www.geany.org/ ].
- pycodestyle [ https://pypi.org/project/pycodestyle/ ].
2. SciTE
C’est l’éditeur que je préfère car il n’y a pas plus simple, le défaut sur Windows est encore lié au panneau avec la console intégrée, qui ne supporte pas les séquences ANSI. Pour installer l’éditeur, on peut aller sur le site ‘Scintilla and Scite‘ puis SciTE, puis download Scintilla and SciTE et on choisit un des installeurs 64 ou 32 bits. De la même manière que Geany, SciTE est lancé via le CLI si un alias a été configuré dans un setvars.bat :
|
1 2 |
doskey scite="C:\Program Files (x86)\SciTE\SciTE.exe" echo alias: 'scite' for SciTE editor |
Configuration Python
Il faut ouvrir Options > Open Python properties et :
- Changer
keywordclass.pythonenpython3 - Editer
pywenpythonwdans le premierPLAT_WIN, ne pas toucher au secondPLAT_WIN:
...#keywordclass.python=$(keywordclass.python2)keywordclass.python=$(keywordclass.python3)...if PLAT_WIN# python.command=pywpython.command=pythonwif PLAT_WINcommand.go.*.py=$(python.command) -u "$(FileNameExt)"command.go.subsystem.*.py=1command.go.*.pyw=$(python.command) -u "$(FileNameExt)"command.go.subsystem.*.pyw=1command.build.SConscript=scons.bat --up .command.build.SConstruct=scons.bat . |
Liens et lectures
- Scintilla and Scite [ https://www.scintilla.org/ ].
- SciTE [ https://www.scintilla.org/SciTE.html ].
- SciTE download [ https://www.scintilla.org/SciTEDownload.html ].
- Installeur SciTE [ https://www.ebswift.com/scite-text-editor-installer.html ].
3. Paramétrages pour SciTE
Si nécessaire, il faut intégrer les informations en éditant un fichier de propriétés.
Menu Options > Open User Option Files pour contrôler au niveau utilisateur sans toucher aux préférences globales.
Couleurs par défaut (Python properties)
| # Python styles | |
| # White space # Comment # Number # String # Single quoted string # Keyword # Triple quotes # Triple double quotes # Class name definition # Function or method name definition # Operators # Identifiers # Comment-blocks # End of line where string is not closed # Highlighted identifiers # Decorators # F-String # Single quoted f-string # Triple quoted f-string # Triple double quoted f-string # Matched Operators # Braces are only matched in operator |
style.python.0=fore:#808080 style.python.1=fore:#007F00,$(font.comment) style.python.2=fore:#007F7F style.python.3=fore:#7F007F,$(font.monospace) style.python.4=fore:#7F007F,$(font.monospace) style.python.5=fore:#00007F,bold style.python.6=fore:#7F0000 style.python.7=fore:#7F0000 style.python.8=fore:#0000FF,bold style.python.9=fore:#007F7F,bold style.python.10=bold style.python.11= style.python.12=fore:#7F7F7F style.python.13=fore:#000000,$(font.monospace),back:#E0C0E0,eolfilled style.python.14=fore:#407090 style.python.15=fore:#805000 style.python.16=fore:#7F007F,$(font.monospace) f-string style.python.17=fore:#7F007F,$(font.monospace) f-string style.python.18=fore:#7F0000 f-string style.python.19=fore:#7F0000 style.python.34=fore:#0000FF,bold / style.python.35=fore:#FF0000,bold style braces.python.style=10 |
Par exemple, pour des TABs/SPACEs en gris léger et une fenêtre output en mode réverse :
|
1 2 3 4 5 |
# Python colors whitespace.fore=#B0B0B0 # Output panel style.errorlist.32=$(font.small),back:#000000 style.errorlist.0=fore:#FFFFFF |
Edition (User properties)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# Visibility clear.before.execute=1 pathbar.visible=1 statusbar.visible=1 #magnification=1 #output.magnification=1 view.whitespace=1 view.indentation.guides=1 line.margin.visible=1 line.margin.width=3+ # Windows split.wide=1 horizontal.scrollbar=1 horizontal.scroll.width=1 horizontal.scroll.width.tracking=1 output.horizontal.scrollbar=1 output.horizontal.scroll.width=1 output.horizontal.scroll.width.tracking=1 output.horizontal.size=200 output.scroll=1 output.initial.hide=0 accessibility=0 # Wrapping output.wrap=1 wrap.visual.flags=1 # Edition tabsize=4 indent.size=4 use.tabs=1 indent.auto=0 autocompleteword.automatic=1 |
Limitation de la liste de langages (User properties)
Ce n’est pas nécessaire mais cela permet de limiter la liste de langages dans le menu déroulant qui peut être trop longue et nuire aux manipulations (Python est en fin de liste et on doit dérouler pour l’atteindre). Par exemple, je me limite à quelques entrées en utilisant une liste d’exclusions :
|
1 2 3 4 5 6 7 8 9 |
imports.exclude=asl asciidoc cmake coffeescript asm ave abaqus \ ada asn1 au3 avenue avs baan blitzbasic bullant caml cobol cil \ csound dataflex eiffel ecl escript erlang flagship forth freebasic \ fsharp gap haskell hex inno kix lot lout lua metapost mmixal \ modula3 nimrod nncrontab maxima lisp conf cpp matlab pascal \ opal latex fortran oscript powerpro powershell purebasic rebol \ ruby rust scriptol smalltalk pov ps sorcins spice specman nsis \ r d json perl tacl tal txt2tags verilog vhdl visualprolog tcl vb \ yaml registry sas sql registry |
Polices de caractères Windows (User properties)
Il y a plusieurs alternatives possibles à activer et toujours des Polices à découvrir et à ajouter (c’est un peu comme une mode du moment et puis on passe à une autre Police de caractères) :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# Fonts font.base=font:DejaVu Sans Mono,size:10 #font.base=font:Roboto,size:9 #font.base=font:Segoe UI,size:9 #font.base=font:Segoe UI Variable,size:9 #font.base=font:Trebuchet MS,size:9 #font.base=font:Verdana,size:9 #font.base=font:Tahoma,size:9 #font.base=font:Lucida Sans Unicode,size:9 #font.base=font:MS Reference Sans Serif,size:9 font.small=$(font.base),size:8 font.comment=$(font.base) font.code.comment.box=$(font.comment) font.code.comment.line=$(font.comment) font.code.comment.doc=$(font.comment) font.code.comment.nested=$(font.comment) font.text=$(font.base) font.text.comment=$(font.base) font.embedded.base=$(font.base) font.embedded.comment=$(font.base) #font.monospace=font:Lucida Console,size:9 font.monospace=font:Consolas,size:9 font.vbs=font:$(font.base) |
Dans ce cas, l’édition sera centrée (font.base) sur la police DejaVu Sans Mono qui est non proportionnelle, de taille 10px, tous les autres types de texte (ex: commentaires) en dériveront. Je garde en général une autre police explicitement non proportionnelle (activable avec le menu Options > Use Monospaced Font) car changer de police peut aider à voir des problèmes dans le texte.
Pages de code et couleur de la console
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Charsets # Default (single byte character set) = 0, UTF-8 = 65001 #code.page=65001 #output.code.page=65001 output.code.page=0 # Default=0, European with Euro (ISO 8859-15)=1000 # Eastern European=238 #character.set=65001 # Python colors whitespace.fore=#B0B0B0 # Output panel style.errorlist.32=$(font.monospace),back:#303030 style.errorlist.0=fore:#FFFFFF |
Dans ces conditions, SciTE m’est agréable, et pour vous ? Il y a plusieurs auteurs qui ont aussi généré des thèmes inversés avec des couleurs haut contraste ou non (couleurs plus douces, par exemple un orangé plutôt qu’un rouge).
Liens et lectures
- SciTE FAQ [ https://www.scintilla.org/SciTEFAQ.html ].
- Scintilla Docs [ https://www.scintilla.org/ScintillaDoc.html ].
- Exemple de thèmes normaux/inversés [ https://github.com/robertluwang/scite-setting/tree/master ].
3. Spyder
L’intérêt de Spyder (multiplateformes) est que tout est directement intégré : introspection, analyse de code, bibliothèques scientifiques, IPython … Avec cet IDE on entre aussi dans un monde un peu plus complexe que SciTE car il donne accès à différents environnements dans l’éditeur (la même session).
Installation
Spyder installe sa propre instance et environnement (base) de Python (3.11.9 dans l’exemple).
Mais lorsqu’on installe Spyder après tout le processus, il détecte les codes Python dans certains répertoires (par exemple dans c:\Tmp) et les installations de Python + les environnements, qui apparaissent dans le menu Consoles : 3.10.14 et environnement (prod) dans l’exemple:
![]() |
Si on essaie d’utiliser la console avec un environnement local, on obtient une erreur, il faut installer le paquetage spyder-kernels dans chaque environnement local :
(prod) c:\Dev>conda install spyder-kernels=3.0 |
Il est indispensable d’utiliser la version 3 sinon conda installe la version 2.5 (incompatible).
La version 3 n’est disponible que dans le canal conda-forge.
Donc Spyder en mode Python externe, sera limité à un environnement comme (prod) qui inclue le canal conda-forge (defaults/main est limité à la version 2.5). Mais, dans ces condition Spyder fonctionne avec l’environnement (prod) positionné sur Python 3.10. Si on veut utiliser ce Python par défaut (au lieu de l’instance interne) il faut aller dans Tools > Preferences (option use the following interpreter) et introduire le chemin d’accès (en rouge) obtenu par la commande suivante (en bleu) et dans l’environnement ciblé, par exemple pour (base) :
(base) c:\Dev>python -c "import sys; print(sys.executable)"C:\Python3\python.exe |
Si on utilise des briques logicielles qui ont besoin de leurs propres variables d’environnement (i.e. OpenBabel), il faudra lancer Spyder à partir d’un environnement activé par un script
setvars.
Clear console
Quelques possibilités pour faire un clear dans la console :
| Commandes console | ls, clear (linux), clear-host |
| Python | import os os.system(‘clear’) os.system(‘cls’); |
| Séquences ANSI | print(« \033[H\033[J ») print(« \014 ») |
Tests externes
Contrairement à SciTE la console est à la fois compatible ANSI et avec le paquetage colorama.
Les backends graphiques fonctionnent, par exemple avec une fenêtre Qt (PyQt5).
Les codes graphiques basés sur Matplotlib peuvent s’afficher soit dans le Plot Panel (avec un historique des plots), soit Inline (dans la console) si on désactive mute inline plotting dans les options du panneau Plot. La fonction est intéressante car elle reste dans l’IDE mais au final, c’est à voir.
Liens et lectures
- Spyder IDE [ https://www.spyder-ide.org/ ].
- Working with Packages and Environments in Spyder [ https://github.com/spyder-ide/spyder/wiki/Working-with-packages-and-environments-in-Spyder ].
4. Et les autres ?
Sans être un esthète mais pour des raisons d’ergonomie, Il faut aussi que l’édition soit agréable, en termes de polices de caractères, zoom, couleurs, raccourcis-réflexes clavier (par exemple F5 pour lancer une exécution) … avec le temps nous avons tous(tes) nos petites habitudes, que l’on tient à garder.
Donc, j’en ai essayé beaucoup, j’aurais pu décrire VSCodium [ https://vscodium.com/ ] la version open source de Microsoft VS Code, qui phénoménalement riche (et complexe) ou Pyzo [ https://pyzo.org/ ] traité souvent à tort d’éditeur simpliste. Dans les deux cas, les versions sont disponibles pour Windows et Ubuntu (et Mac OS).
