Les Crash-Devs d'un Passionné

Debug pas à pas avec PyCharm

/Catégorie/python

Temps de lecture : 3 minutes

Dans les projets actuellement il est courant d'utiliser les containers Docker. Ceci apporte un tas d'avantages mais également une complexité plus importante, notamment sur la mise en place du mode pas à pas pour déboguer les applications.

Nous allons voir comment faire cela avec l'IDE PyCharm dédié aux projets python

Je vais prendre comme exemple un projet python (sans passer par un framework) avec la librairie Celery

Le 1er pré-requis est de posséder la version Entreprise de cet IDE (vous pouvez tester cet IDE 1 mois avant de payer la licence). En effet la version Community ne permet pas de se connecter aux containers.

Nous allons configurer notre interpréteur python qui est dans un container. Pour cela il faut se rendre dans les Settings / Project / Python Interpreter

python_interpreter_settings_pycharm.png

Il faut adapter les valeurs de l'étape 2 qui correspond à votre fichier docker compose, de l'étape 3 qui est le nom de votre service compose que vous voulez déboguer et de l'étape 4 qui est la localisation de votre interpréteur python. Pour cette dernière étape il est important de le spécifier, si comme moi vous utilisez un outil comme

pipenv
ou
poetry
. Avec pipenv vous obtiendrez le chemin en exécutant la commande
pipenv --venv
dans le container celery.

Nous allons maintenant configurer le debug en ajoutant le type "Python".

debug_configuration_pycharm.png

Il faut choisir l'interpréteur précédemment configuré, en choisissant l'option "module" pour indiquer la librairie celery.

Ajoutez également les fichiers contenant les variables d'environnement si nécessaire pour le bon fonctionnement du container.

Il vous reste à cliquer sur le bouton en forme de cafard, PyCharm va injecter la librairie

pydev
qui permet d'activer le mode pas à pas. Et vous obtiendrez la vue suivante où vous retrouver la ligne en cours d’exécution avec les variables que l'on peut inspecter.

view_debug_pycharm.png

Lors de l’exécution de votre deboguer, vous obtenez un message indiquant que le service ne tourne pas (alors que c'est le cas, vous pouvez vérifier avec un

docker ps
), pensez à ce que l'image et le nom du container soit identique.

clipboard
Copier le code
1
2
3
4
celeryworker:
    ...
    image: projet_celeryworker
    container_name: projet_celeryworker