Des outils utiles pour le développement en local

Des outils utiles pour t'aider à développer du code Python pour Exercism sur ta propre machine.


Note

Ceci est une collection d'outils populaires dans notre communauté. Elle n'a pas vocation à être prescriptive ni exhaustive. Nous pensons que ces outils font bien leur travail, mais il existe très certainement d'autres outils tout aussi bons. Si tu as une recommandation d'éditeur, d'IDE, d'outil ou de plugin, nous t'encourageons à l'ajouter à ce document sur GitHub.



Avant de commencer à explorer, assure-toi d'avoir installé une version récente de Python. La plateforme web d'Exercism prend actuellement en charge Python 3.10 - 3.13.5 (exercices et tests) et Python 3.13.5 (outillage). Notre exécuteur de tests en ligne utilise actuellement pytest 8.4.0 et pytest-subtests 0.14.2. Notre analyseur en ligne utilise pylint 4.0.4. Utiliser localement des versions différentes de Python, pytest ou pylint peut donner des résultats différents de ceux du site web. Pour plus d'informations, consulte Installer Python en local.


Environnements virtuels

Les environnements virtuels Python offrent une isolation légère de l'exécution et des paquets. Ils peuvent t'aider à organiser tes projets en gardant les paquets Python que tu installes regroupés dans un répertoire d'environnement donné. Différents environnements peuvent contenir différentes versions de l'exécution Python, ainsi que les dépendances d'un projet ou d'une bibliothèque. Cela aide à éviter les bugs et les incompatibilités causés par la mise à jour d'une bibliothèque pour un projet, qui « casse » une dépendance dans un autre.

Il existe aujourd'hui de nombreux outils de type environnement virtuel ou apparentés, et un mouvement croissant en faveur des métadonnées intégrées au script, des conteneurs de développement ou de docker au lieu des environnements virtuels. Il est important d'essayer différentes stratégies et d'en trouver une qui convienne à ton style de développement et aux besoins de tes projets. Ne pars pas du principe que les stratégies présentées ici sont universelles, ni qu'elles sont tes seules options. Pour un panorama plus général des outils non couverts ici, jette un œil à cet article de blog de Bas Nijholt et reste curieux.

Nous couvrons ici trois grands outils d'environnement virtuel : la bibliothèque standard de Python venv, l'outil tiers conda env, qui s'appuie sur le gestionnaire de paquets conda et (généralement) sur la distribution Python Anaconda, et le remplaçant tiers de pip + venv, uv. Tous les trois sont assez simples à utiliser et/ou à installer.

En outre, PyEnv, Poetry et virtualenvwrapper sont des outils qui peuvent t'aider à gérer plusieurs versions de Python et plusieurs environnements Python sur la même machine.


Crée un environnement virtuel avec venv

Pour créer un environnement virtuel avec venv, place-toi avec cd dans le répertoire où tu veux stocker tes environnements. Ce répertoire doit être séparé du code de ton projet, et tu ne devras pas l'ajouter au contrôle de version. Ensuite, exécute la commande venv en précisant le nom du dossier où tu veux stocker cet environnement précis. Par convention, ce dossier s'appelle <project-name-here>_venv :

Windows

PS C:\Users\foobar> py -m venv {name_of_virtualenv}

Pour activer l'environnement virtuel, exécute la commande suivante :

PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _

Linux/MacOS

$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms

Pour activer l'environnement virtuel, exécute la commande suivante :

$ source {name_of_virtual_env}/bin/activate
(venv) $ _

Une fois qu'un venv est activé, tu peux exécuter des commandes pip pour installer des paquets « à l'intérieur » de l'environnement. Les paquets installés seront associés à la version de Python du venv et se trouveront dans {name_of_virtual_env}/Lib.

Désactiver un environnement virtuel se fait en appelant le script deactivate, qui se trouve dans le même répertoire que activate.


Crée un environnement virtuel avec conda

La dernière version de conda peut être installée via miniconda. Cet aide-mémoire conda est très utile, tout comme la documentation de conda.

Créé à l'origine comme gestionnaire de paquets Python pour la populaire distribution Anaconda distribution du « Python scientifique », conda a ensuite été généralisé et étendu. Les environnements Conda sont similaires aux venv, la principale différence étant que conda peut créer des environnements virtuels et installer des paquets pour de nombreux autres langages de programmation en plus de Python.

Parmi les langages pris en charge par Conda figurent R, JavaScript, Ruby, Fortran, C/C++, Scala, Java, et bien d'autres. Pour une comparaison des commandes conda et venv, consulte la référence des commandes de conda.


MacOS/Linux

Pour créer un environnement conda, tape ce qui suit, en remplaçant {name of environment} par le nom de ton choix et python={version} par la version de Python que tu souhaites. Tu peux ensuite ajouter les paquets supplémentaires que tu veux installer dans l'environnement :

$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...

## Package Plan ##

  environment location: /usr/local/anaconda3/envs/test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h2ec42d9_0         364 KB  conda-forge
    dill-0.3.4                 |     pyhd8ed1ab_0          62 KB  conda-forge
    lazy-object-proxy-1.7.1    |  py310he24745e_0          32 KB  conda-forge
    ....
    additional packages here
    ....
    ------------------------------------------------------------
                                           Total:        21.8 MB

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Windows

Créer un environnement conda sous Windows utilise les mêmes commandes générales que sous Linux/MacOS. Il est toutefois recommandé d'utiliser les invites Anaconda cmd ou powershell plutôt que d'ajouter conda à ton pyenv :

(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Anaconda3\envs\test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h5588dad_0         364 KB  conda-forge
    attrs-21.4.0               |     pyhd8ed1ab_0          49 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ...
    additional packages here
    ...
    ------------------------------------------------------------
                                           Total:        37.5 MB

Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

UV

Travaille sur des projets avec uv : uv

uv est un outil de gestion de paquets et de projets Python d'Astral, écrit en Rust. Il a été conçu pour remplacer pip, venv, poetry et les autres outils de gestion des paquets et des dépendances Python. Contrairement à Conda ou Mamba, uv est spécialisé et conçu uniquement pour Python. uv prend toutefois en charge la compilation de modules d'extension Python écrits dans d'autres langages, comme Fortran. Astral est aussi le développeur du populaire outil d'analyse statique Ruff et de TY, un vérificateur de types statique pour les annotations de type Python, tous deux écrits en Rust.

Plutôt que d'entrer dans les détails ici, la documentation d'UV est ta meilleure source pour l'installation et la configuration.

Virtual Environment wrapper

Documents et contexte : virtualenvwrapper.

Le paquet virtualenvwrapper fonctionne au-dessus de venv pour gérer tous tes environnements virtuels au même endroit. Tu peux créer, copier, supprimer et passer d'un environnement à l'autre avec des commandes de type Linux telles que lsvirtualenv (pour lister les environnements) et mkvirtualenv (pour créer un environnement). Il te permet aussi d'ajouter des outils de gestion supplémentaires grâce à des extensions. Tu peux même créer tes propres extensions de l'outil grâce à ce tutoriel.


PyEnv

pyenv est le portage Python des populaires outils rbenv/ruby-build, modifié pour Python. Il s'agit essentiellement d'un ensemble de scripts et de shims qui permettent de définir les versions de Python, à la fois globalement et par utilisateur. Il essaie de respecter la tradition Unix d'un outil à usage unique et discret, qui fait bien une seule chose.

pyenv et sa documentation se trouvent sur GitHub.



Éditeurs et IDE



Visual Studio Code

Visual Studio Code (VS Code) est un éditeur de code gratuit créé par Microsoft. Il offre une excellente prise en charge des environnements virtuels et conda, ainsi que de docker (via le plugin Docker), et peut être étendu avec de nombreux plugins pour les tests, l'analyse statique, le formatage et le développement web.

Python pour VS Code

Extension-id: ms-python.python

En-tête de l'extension Python dans VS Code

L'extension Python de Microsoft est l'extension Python officielle de Microsoft pour VS Code, et une installation vivement recommandée. Elle offre un large éventail de fonctionnalités, notamment la gestion des environnements, la gestion des tests, l'analyse statique et le débogage. Depuis la dernière version, installer l'extension Python de Microsoft télécharge aussi pylance (un paquet populaire pour l'analyse statique et la validation du code Python) et jupyter (pour travailler avec les notebooks Jupyter).

  • Un tutoriel d'installation est disponible ici et la référence des paramètres est très utile.
  • Des informations sur la configuration des versions de Python et l'utilisation des environnements virtuels se trouvent ici.
  • Des informations sur la configuration et l'utilisation de unittest et pytest dans VS Code se trouvent ici.

PyCharm

PyCharm est un IDE (environnement de développement intégré) créé par JetBrains. Il est conçu spécialement pour Python et est populaire chez les professionnels . Comme VS Code, il peut être étendu avec divers plugins, thèmes et formateurs payants ou gratuits. La version payante prend aussi en charge le développement Django, le développement Docker et l'intégration de bases de données.

Pycharm et Pytest
  • Les étapes pour configurer pytest avec Pycharm se trouvent ici.
  • Pycharm utilise unittest par défaut, tu dois donc avoir installé pytest dans l'environnement que tu utilises avec Pycharm (voir les documents sur l'interpréteur et l'environnement ci-dessus), puis le signaler à Pycharm.
  • Exécuter les tests directement depuis l'interface graphique est vraiment simple, mais n'oublie pas de bien regarder les paramètres pytest sous-jacents, pour que tout soit configuré à ton goût.
  • La documentation générale pour exécuter les tests et déboguer dans Pycharm se trouve ici.

Spyder IDE

Spyder est un IDE Python libre, open source et multiplateforme, conçu pour la communauté scientifique. Il est généralement inclus dans la distribution Anaconda de Python, mais peut aussi être installé seul et utilisé avec n'importe quelle version de Python. Nous recommandons une installation autonome pour garantir une flexibilité maximale et éviter tout conflit de paquets.

Spyder prend entièrement en charge les environnements venv et conda. Il inclut un terminal interactif IPython intégré, un débogueur interactif et une riche prise en charge du tracé et de l'exploration de données directement dans l'éditeur. La complétion de code et l'analyse statique supplémentaires sont fournies par kite. Les intégrations avec les notebooks Jupyter et les outils de test sont fournies par des plugins développés par la communauté. Tu peux aussi écrire tes propres plugins à l'aide de l'API de Spyder.


Emacs

Emacs est un éditeur de texte libre, open source et hautement personnalisable, écrit en Lisp. Un excellent guide d'installation et de configuration est disponible sur Real Python.

  • Le wiki Emacs propose aussi un bon guide de programmation Python avec Emacs.
  • Full Stack Python rassemble également de bonnes informations et des liens utiles pour débuter avec Emacs.

Vim

Vim est une version libre et « améliorée » de l'éditeur de texte standard Unix vi. Il est disponible sur une grande variété de systèmes d'exploitation et de distributions Linux/Unix. Un excellent guide d'installation et de configuration est disponible sur Real Python, et des aide-mémoire pratiques sont disponibles sur vimsheet, glump et rtorr.

Même si tu décides que l'édition de code Python dans vim n'est pas pour toi, il est recommandé de te familiariser avec un ensemble de commandes de base. vim ou vi est souvent l'éditeur de texte « de base » ou « par défaut » des distributions Linux et Unix, et c'est l'éditeur par défaut pour les messages de commit git (entre autres) sur ces systèmes. Il y a de bonnes chances que tu te retrouves sur un système *nix avec seulement vi disponible pour modifier un fichier de configuration, donc savoir comment quitter vim est (au minimum) une bonne assurance.


Spacemacs

Spacemacs (dépôt github) est une distribution libre d'Emacs portée par la communauté, qui combine les fonctionnalités d'Emacs et de Vim.

  • La documentation officielle se trouve ici
  • Ce guide sur opensource donne un rapide aperçu des options d'installation et de configuration.
  • La couche python de Spacemacs ajoute des fonctionnalités de test, d'analyse statique, de gestion d'environnements et de formatage de code.

Sublime text

Sublime text est un éditeur de texte payant pour le code, créé par Sublime HQ Pty Ltd. Il est similaire à VS Code et à Atom, avec de nombreux paquets et plugins pour le personnaliser. Tu peux aussi développer tes propres plugins pour l'éditeur, en Python.