Visual Studio Code

Développer en Python avec Visual Studio Code
Author

Ludovic Deneuville

1 Visual Studio Code

Visual Studio Code (VS Code) est un éditeur de code source développé par Microsoft, gratuit et open-source, conçu pour être léger et performant. Il est compatible avec de très nombreux langages de programmation : Python, R, Java, JavaScript, C++…

1.1 Fonctionnalités

  • Auto-complétion : Aide à écrire du code plus rapidement et avec moins d’erreurs
  • Coloration syntaxique : Améliore la lisibilité du code
  • Débogage intégré : Facilite l’identification et la correction des erreurs
  • Extensibilité : grâce à une vaste bibliothèque d’extensions disponibles sur le marketplace
  • Configuration et outils : linters, formateurs de code…

Le but de cette fiche est de :

  • vous permettre d’exécuter un programme python avec VS Code
  • donner quelques astuces pour faciliter son utilisation

2 Paramétrage

2.1 Extensions

De très nombreuses extensions permettent d’améliorer votre utilisation de VS Code. Sur la version installée sur la VM ENSAI, vous pouvez trouver :

  • Black Formatter
  • Flake8
  • isort
  • Python Test Explorer
  • Désactiver l’extension Ruff (elle fait doublon avec Flake8)

Autres extensions interessantes :

  • Better Comments

2.2 Formatage et Linting

  • Un formateur est un outil qui va mettre en forme votre code pour que ce soit joli et lisible
  • un linter est un outil qui va vous avertir si votre code n’est pas joli
    • ex : ligne trop longue, espace manquant ou en trop…

Les extensions Black Formatter et Flake8 sont respectivement un formateur et un linter

2.3 Settings

Vous pouvez préciser le paramètrage à plusieurs niveaux :

  • au niveau utilisateur (User)
  • au niveau d’un dépôt (Workspace)

Le fichier .vscode/settings.json contient du paramètrage qui va s’appliquer à tous les fichiers du dépôt.

Ce fichier contient par exemple les propriétés ci-dessous :

.vscode/settings.json
    "flake8.args": [
        "--max-line-length=100"
    ],
    "[python]": {
        "editor.defaultFormatter": "ms-python.black-formatter",
        "editor.formatOnSave": true,
        "editor.insertSpaces": true,
        "editor.tabSize": 4
    },

3 Première utilisation

Note

Nous allons créer un dépôt local avec Git, puis ouvrir ce dépôt avec VSCode.

    • Menu Terminal > New terminal (raccourci : CTRL + ù)
    • Copiez cette commande : mkdir -p /p/Cours2A/UE3_Remise_a_niveau
    • Dans le terminal, faîtes clic droit (Coller) puis ENTREE
    • Vérifiez que les dossiers sont bien créés, sinon créer les dossiers à la main
    • Positionnez-vous dans le dossier créé : cd /p/Cours2A/UE3_Remise_a_niveau
    • git clone https://github.com/ludo2ne/ENSAI-2A-remise-a-niveau.git
    • Dans VSCode : File > Open Folder
    • Sélectionnez le dossier P:/Cours2A/UE3_Remise_a_niveau/ENSAI-2A-remise-a-niveau créé précédemment
    • Yes i trust…
    • Ouvrez le fichier Python-POO/exemple/src/__main__.py
    • Executez le fichier
      • En haut à droite, cliquer sur l’icone en forme de triangle ▷
      • Run python file in terminal
    • Cela ouvre un terminal et exécute le fichier

4 Le terminal python

2 modes :

  • P:\Cours\Python\tp1>
    • pour éxecuter en totalité un fichier python
      • en cliquant sur le triangle ▷
      • en tapant la commande python bacasable.py
    • taper python en ENTREE pour passer à l’autre mode
  • >>> pour exécuter directement du code python
    • permet d’exécuter uniquement certaines lignes du fichier
      • en cliquant sur une ligne puis SHIFT + ENTREE
      • en sélectionnant plusieurs lignes puis SHIFT + ENTREE
    • dans ce mode on peut aussi écrire directement du python dans le terminal
    • taper quit() ou CTRL + Z pour retourner à l’autre mode

5 Python, VSCode et les packages

Imaginez que votre code est organisé de la manière ci-dessous

├───tp1
│   └───src
│   │   ├───vehicule
│   │   │   ├───velo.py
│   │   │   └───trottinette.py
│   │   ├───animal
│   │   │   ├───girafe.py
│   │   │   └───ane.py

Si dans la classe Girafe, vous voulez créer un objet de la classe Velo, vous pouvez par exemple faire ceci dans le code de girafe.py :

  • import de la classe Velo
  • puis création d’un objet Velo
girafe.py
from vehicule.velo import Velo

class Girafe:
    def __init__(self, nom, nom_moyen_transport):
        self.nom = nom
        vehicule = None
        if nom_moyen_transport * "velo":
            vehicule = Velo()
        self.moyen_transport = vehicule

🚨 Cependant, il se peut que que VSCode et/ou le compilateur python n’apprécient pas ce genre d’imports et que vous rencontriez des erreurs du type le module velo n’existe pas

Comme solution de contournement, vous pouvez :

  • en reprenant l’arborescence ci-dessus,
  • dans le dossier code créez un dossier .vscode
  • dans ce dossier .vscode, créer le fichier settings.json qui contient ceci :
{
    "python.analysis.extraPaths": [
        "./*"
    ],
    "terminal.integrated.env.windows": {
        "PYTHONPATH": "${workspaceFolder}/src",
    },
    "terminal.integrated.env.linux": {
        "PYTHONPATH": "${workspaceFolder}/src",
    },
    "python.languageServer": "Jedi"
}
  • puis fermez et redémarrez VSCode
  • File > Open Folder > C:/.../tp1/code

6 Afficher les variables d’environnement

printenv
echo $PYTHONPATH
echo $HOME