Les Crash-Devs d'un Passionné

Configurer VSCode pour développer des applications python

/Catégorie/python

Temps de lecture : 3 minutes

J'utilise VSCode depuis 2 ans et j'avoue avoir été conquis immédiatement par sa simplicité, sa performance et ses lots de plugins pour faire tout ce dont j'ai besoin. C'est cette partie configuration que je vais détailler ici.

Il existe 2 types de fichiers settings dans VSCode

  • User Settings - Settings that apply globally to any instance of VS Code you open.
  • Workspace Settings - Settings stored inside your workspace and only apply when the workspace is opened.

Moi j'utilise la configuration utilisateur, ainsi elle s'applique à tous mes projets.

On peut aussi surcharger ces configurations avec un fichier de paramétrage par projet. Pour cela il faut aller dans Fichier/Préférences/Paramètres puis dans la liste déroulante de Paramètres de dossier choisir le projet. On peut aussi simplement ajouter un fichier settings.json dans le dossier .vscode de votre projet.

clipboard
Copier le code
1
2
3
4
5
{
  "python.pythonPath": "C:\\Users\\general03\\.virtualenvs\\my_project-DrmftP7-\\Scripts\\python.exe",
  "python.linting.enabled": false,
  // Mettre la configuration en dessous
}

Maintenant configurez le fichier .vscode/launch.json afin de faire du débogage, dans cet exemple mon script index.py prend un fichier en paramètre

clipboard
Copier le code
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "My Project",
      "type": "python",
      "request": "launch",
      "console": "integratedTerminal",
      "program": "${workspaceRoot}/src/index.py",
      "args": [
        "-f",
        "${workspaceRoot}\\file.txt"
      ],
      "envFile": "${workspaceRoot}/.env"
    }
  ]
}

Dans le cas où vous utilisez pipenv il est nécessaire de mettre le chemin de votre dossier projet de virtualisation. Pour cela executez dans votre projet

pipenv --venv

pour mettre ce chemin dans le fichier settings.json dans le dossier .vscode de votre projet au niveau de python.pythonPath.

Dans mes développement il m'arrive de lancer des tâches régulièrement pour cela j'utilise runTask afin de lancer par exemple le collectstatic de django

Dans le fichier keybindings.json

clipboard
Copier le code
1
2
3
4
5
6
7
8
9
[
  {
    "key": "ctrl+alt+u",
    "command": "workbench.action.terminal.sendSequence",
    "args": {
      "text": "python manage.py collectstatic"
    }
  },
]

Il m'arrive aussi de lancer régulièrement ma commande Git pour faire du push. Mais cette fois j'ai besoin d'ajouter un input correspondant à mon mesage de commit alors j'utilise cette fois une task qui est placée dans .vscode/tasks.json

clipboard
Copier le code
 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
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Git commit / push",
      "type": "shell",
      "windows": {
        "command": "git add . ; git commit -v -a -m \"${input:messageCommit}\" ; git push",
      },
      "options": {
        "cwd": "${workspaceRoot}"
      },
      "args": [],
      "problemMatcher": []
    }
    ],
    "inputs": [
    {
      "id": "messageCommit",
      "description": "The commit message :",
      "default": "",
      "type": "promptString"
    },
  ]
}

Il faut mettre à jour le mapping dans le fichier keybindings.json pour lancer cette tâche avec la combinaison de touches choisie

clipboard
Copier le code
1
2
3
4
{
  "key": "ctrl+alt+u",
  "command": "workbench.action.tasks.runTask"
}

Et lorsque l'usage des task de VSCode n'est pas possible, je passe par le plugin Save and run reg

Je l'utilise pour faire mon formatteur avec la librairie autoflake. Pour cela je configure mon settings.json ainsi

clipboard
Copier le code
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
"saveAndRunReg": {
        "commands": [
            {
                "match": ".py",
                "cmd": "autoflake --in-place --recursive --remove-unused-variables --remove-all-unused-imports --exclude '__init__.py,dev.py,production.py' ${workspaceFolder}",
                "useShortcut": false,
                "silent": false
            }
        ]
    },

Et voilà en vrac les plugins VSCode que j'utilise

  • ms-python.python
  • njpwerner.autodocstring
  • PeterJausovec.vscode-docker
  • mikestead.dotenv
  • brainfit.vscode-importmagic
  • Remisa.shellman
  • onpaik.save-and-run-reg