Projets Python dans Visual Studio

Les applications Python sont généralement définies en utilisant uniquement des dossiers et des fichiers. Cette structure peut devenir complexe à mesure que les applications grossissent et impliquent peut-être des fichiers générés automatiquement, JavaScript pour les applications web, etc. Un projet Visual Studio peut vous aider à gérer la complexité. Le projet (un fichier .pyproj) identifie l’ensemble des fichiers sources et de contenu associés à votre projet. Il contient des informations de build pour chaque fichier, tient à jour les informations pour l’intégration aux systèmes de contrôle de code source et vous permet d’organiser votre application en composants logiques.

Capture d’écran d'un projet Python ouvert dans l'explorateur de solutions de Visual Studio.

Les projets sont toujours gérés dans une solution Visual Studio. Une solution peut contenir un nombre quelconque de projets susceptibles de se référencer entre eux, tels qu’un projet Python qui référence un projet C++ qui implémente un module d’extension. Avec cette relation, Visual Studio génère automatiquement le projet C++ (si nécessaire) lorsque vous commencez à déboguer le projet Python. Pour plus d’informations, consultez Solutions et projets dans Visual Studio.

Visual Studio fournit différents modèles de projet Python pour créer rapidement plusieurs types de structures d’application. Vous pouvez choisir un modèle pour créer un projet à partir d’une arborescence de dossiers existante ou créer un projet vide. Pour obtenir la liste des modèles disponibles, consultez le tableau dans la section Modèles de projet.

Conseils pour utiliser des projets Python

Vous n’avez pas besoin d’utiliser des projets pour exécuter du code Python dans Visual Studio, mais il y a des avantages à le faire. Lorsque vous commencez, passez en revue les points suivants sur l’utilisation de projets et de Python.

  • Dans Visual Studio 2019 et ultérieur, vous pouvez ouvrir un dossier contenant le code Python et exécuter ce code sans créer de fichiers projet et solution Visual Studio.

    Vous trouverez les étapes guidées de cette approche dans l’article Démarrage rapide : Ouvrir et exécuter du code Python dans un dossier.

  • Vous n’avez pas besoin d’un projet pour exécuter du code Python dans Visual Studio. Toutes les versions de Visual Studio fonctionnent bien avec le code Python.

    Vous pouvez directement ouvrir un fichier Python et accéder immédiatement aux fonctionnalités d’autocomplétion, d’IntelliSense et de débogage. Toutefois, il y a quelques inconvénients potentiels à utiliser le code sans projet :

    • Étant donné que le code utilise toujours l’environnement global par défaut, vous risquez de voir des complétions incorrectes ou des erreurs si le code est destiné à un autre environnement.
    • Visual Studio analyse tous les fichiers et packages dans le dossier à partir duquel le fichier unique est ouvert. Ce processus peut consommer beaucoup de temps processeur.
  • Vous pouvez créer un projet Visual Studio à partir de code existant. Cette approche est décrite dans la section Créer un projet à partir de fichiers existants.

Tâches de projet de base : fichiers, environnements et démarrage

Lorsque vous utilisez des projets avec votre code Python, vous effectuez des tâches de base, notamment l’ajout de fichiers, l’affectation d’un fichier de démarrage et la définition de l’environnement d’interpréteur Python.

À mesure que vous développez votre application, vous devez généralement ajouter de nouveaux fichiers de différents types à votre projet. Il est facile d’ajouter d’autres fichiers. Cliquez avec le bouton droit sur votre projet, sélectionnez Ajouter>Élément existant et recherchez le type de fichier à ajouter. L’option Ajouter>Nouvel élément ouvre une boîte de dialogue qui affiche les modèles d’élément que vous pouvez utiliser pour créer le fichier. Les options comprennent des fichiers Python vides, une classe Python, un test unitaire et divers fichiers associés aux applications web. Vous pouvez explorer les options de modèle avec un projet de test pour savoir ce qui est disponible dans votre version de Visual Studio. Pour plus d’informations, consultez les informations de référence sur les modèles d’élément.

Chaque projet Python comprend un fichier de démarrage attribué, indiqué en gras dans l’Explorateur de solutions. Le fichier de démarrage s’exécute lorsque vous commencez le débogage (en sélectionnant F5 ou Déboguer>Démarrer le débogage) ou lorsque vous exécutez votre projet dans la fenêtre Interactive. Vous pouvez ouvrir cette fenêtre avec le raccourci clavier Maj + Alt + F5 ou en sélectionnant Déboguer>Exécuter le projet dans la fenêtre interactive Python. Pour changer le fichier de démarrage, cliquez avec le bouton droit sur le fichier à utiliser et sélectionnez Définir comme élément de démarrage (ou Définir comme fichier de démarrage dans les versions antérieures de Visual Studio).

Si vous supprimez le fichier de démarrage sélectionné d’un projet et que vous n’en sélectionnez pas un autre, Visual Studio ne sait pas quel fichier Python utiliser pour démarrer le projet. Dans ce cas, Visual Studio 2017 versions 15.6 et ultérieures affiche une erreur. Les versions antérieures ouvrent une fenêtre de sortie avec l’interpréteur Python en cours d’exécution, ou la fenêtre de sortie s’ouvre et se ferme immédiatement. Si vous rencontrez l’un de ces comportements, vérifiez que vous avez un fichier de démarrage assigné.

Conseil

Pour que la fenêtre de sortie reste ouverte, cliquez avec le bouton droit sur votre projet et sélectionnez Propriétés. Dans la boîte de dialogue, sélectionnez l’onglet Déboguer, puis ajoutez l’indicateur -i au champ Arguments de l’interpréteur. Avec cet argument, l’interpréteur passe en mode interactif après la fin d’un programme. La fenêtre reste ouverte tant que vous ne la fermez pas, par exemple à l’aide du raccourci clavier Ctrl+E+Entrée.

Un nouveau projet est toujours associé à l’environnement Python global par défaut. Pour associer le projet à un autre environnement (y compris un environnement virtuel), cliquez avec le bouton droit sur le nœud Environnements Python dans le projet. Sélectionnez Ajouter un environnement, puis sélectionnez les environnements que vous voulez. Vous pouvez également utiliser le contrôle de liste déroulante des environnements dans la barre d’outils pour sélectionner un environnement ou en ajouter un autre dans le projet.

Capture d’écran montrant la commande Ajouter un environnement dans la barre d’outils Python dans Visual Studio.

Pour changer l’environnement actif, cliquez avec le bouton droit sur l’environnement souhaité dans l’Explorateur de solutions et sélectionnez Activer l’environnement, comme indiqué dans l’image suivante. Pour plus d’informations, consultez Sélection d’un environnement pour un projet.

Capture d’écran montrant comment activer un environnement pour un projet Python dans Visual Studio.

Modèles de projet

Visual Studio vous propose de nombreux moyens de configurer un projet Python, que ce soit à partir de zéro ou en utilisant du code existant. Pour utiliser un modèle, sélectionnez Fichier>Nouveau>Projet ou cliquez avec le bouton droit sur la solution dans l’Explorateur de solutions et sélectionnez Ajouter>Nouveau projet. Dans la boîte de dialogue Nouveau projet, vous pouvez voir des modèles propres à Python en recherchant sur Python ou en sélectionnant le nœud Langage>Python :

Capture d’écran montrant la boîte de dialogue nouveau projet avec les modèles Python disponibles dans Visual Studio.

Les modèles suivants sont disponibles dans Visual Studio version 2022.

Template Description
À partir de code Python existant Crée un projet Visual Studio à partir du code Python existant dans une structure de dossiers.
Application Python Fournit une structure de projet de base pour une nouvelle application Python avec un fichier source unique vide. Par défaut, le projet s’exécute dans l’interpréteur de la console de l’environnement global par défaut. Vous pouvez changer et attribuer un autre environnement.
Projets web Projets pour les applications web basées sur différents frameworks, notamment Bottle, Django et Flask.
Application d’arrière-plan (IoT) Prend en charge le déploiement de projets Python pour une exécution en tant que services d’arrière-plan sur les appareils. Pour plus d’informations, consultez le Centre de développement Windows IoT.
Module d’extension Python Ce modèle s’affiche sous Visual C++ si vous installez les Outils de développement natifs Python avec la charge de travail Python dans Visual Studio 2017 ou ultérieur (voir Installation). Le modèle fournit la structure de base pour une DLL d’extension C++, similaire à la structure décrite dans Créer une extension C++ pour Python.

Les modèles suivants sont disponibles dans Visual Studio version 2019. Les modèles disponibles dans la version 2019 ne sont pas tous disponibles dans les versions antérieures de Visual Studio.

Template Description
À partir de code Python existant Crée un projet Visual Studio à partir du code Python existant dans une structure de dossiers.
Application Python Fournit une structure de projet de base pour une nouvelle application Python avec un fichier source unique vide. Par défaut, le projet s’exécute dans l’interpréteur de la console de l’environnement global par défaut. Vous pouvez changer et attribuer un autre environnement.
Projets web Projets pour les applications web basées sur différents frameworks, notamment Bottle, Django et Flask.
Application d’arrière-plan (IoT) Prend en charge le déploiement de projets Python pour une exécution en tant que services d’arrière-plan sur les appareils. Pour plus d’informations, consultez le Centre de développement Windows IoT.
Module d’extension Python Ce modèle s’affiche sous Visual C++ si vous installez les Outils de développement natifs Python avec la charge de travail Python dans Visual Studio 2017 ou ultérieur (voir Installation). Le modèle fournit la structure de base pour une DLL d’extension C++, similaire à la structure décrite dans Créer une extension C++ pour Python.
Application IronPython Utilise IronPython par défaut et active l’interopérabilité .NET et le débogage en mode mixte avec les langages .NET. Ce modèle est similaire au modèle Application Python.
Application WPF IronPython Fournit une structure de projet en utilisant IronPython avec les fichiers XAML Windows Presentation Foundation pour l’interface utilisateur de l’application. Visual Studio fournit un concepteur d’interface utilisateur XAML, code-behind peut être écrit en langage Python et l’application s’exécute sans affichage d’une console.
Page web Silverlight IronPython Crée un projet IronPython qui s’exécute dans un navigateur en utilisant Silverlight. Le code Python de l’application est inclus dans la page web en tant que script. Une balise de script réutilisable extrait le code JavaScript pour initialiser IronPython exécuté dans Silverlight, à partir duquel votre code Python peut interagir avec le DOM.
Application Windows Forms IronPython Crée une structure de projet avec IronPython et l’interface utilisateur créée à partir du code avec Windows Forms. L’application s’exécute sans affichage d’une console.

Remarque

Python étant un langage interprété, les projets Python dans Visual Studio ne produisent aucun exécutable autonome comme d’autres projets de langage compilé tel que C#. Pour plus d’informations, consultez Questions et réponses.

Créer un projet à partir de fichiers existants

Suivez ces étapes pour créer un projet à partir de fichiers existants.

Important

Le processus suivant ne déplace ni ne copie aucun fichier source d’origine. Si vous souhaitez utiliser une copie de vos fichiers, commencez par dupliquer le dossier, puis créez le projet.

  1. Lancez Visual Studio et sélectionnez Fichier>Nouveau> Projet.

  2. Dans la boîte de dialogue Créer un projet, recherchez python et sélectionnez le modèle À partir du code Python existant, puis sélectionnez Suivant.

  3. Dans la boîte de dialogue Configurer votre nouveau projet, entrez le Nom et l'Emplacement du projet, choisissez la solution qui contiendra le projet et sélectionnez Créer.

  4. Dans l'Assistant Créer un projet à partir de code Python existant, définissez le Chemin d'accès au dossier de votre code existant et un Filtre pour les types de fichiers, spécifiez les Chemins de recherche nécessaires à votre projet, puis sélectionnez Suivant. Si vous ne connaissez pas les chemins de recherche, laissez le champ vide.

    Capture d’écran d’une création de nouveau projet à partir du code existant, y compris le choix du chemin d'accès au dossier, des filtres de type de fichier et des chemins de recherche.

  5. À la page suivante, sélectionnez le Fichier de démarrage de votre projet. Visual Studio sélectionne l’interpréteur Python global par défaut et la version. Vous pouvez changer l’environnement à l’aide du menu déroulant. Ensuite, sélectionnez Suivant.

    Remarque

    La boîte de dialogue affiche uniquement les fichiers du dossier racine. Si le fichier souhaité se trouve dans un sous-dossier, laissez le fichier de démarrage vide. Vous pourrez définir le fichier de démarrage dans l'Explorateur de solutions, comme décrit dans une étape ultérieure.

    Capture d’écran de la fenêtre Création d’un nouveau projet à partir de la fenêtre Code existant, y compris le choix du fichier de démarrage et de l’environnement Python.

  6. Sélectionnez l'emplacement où vous souhaitez enregistrer le fichier projet (un fichier .pyproj sur le disque). Si applicable, vous pouvez également inclure la détection automatique des environnements virtuels et personnaliser le projet pour différentes infrastructures web. Si vous n’êtes pas sûr de ces options, laissez les champs avec leurs valeurs par défaut.

    Capture d'écran d'une création de projet à partir de la fenêtre Code existant, y compris l'emplacement du fichier projet et d'autres paramètres facultatifs.

  7. Sélectionnez Terminer.

    Visual Studio crée le projet et l’ouvre dans l’Explorateur de solutions. Si vous souhaitez déplacer le fichier .pyproj vers un autre emplacement, sélectionnez le fichier dans l’Explorateur de solutions, puis sélectionnez Fichier>Enregistrer sous dans la barre d’outils. Cette action met à jour les références de fichiers dans le projet, mais ne déplace aucun fichier de code.

  8. Pour définir un autre fichier de démarrage, recherchez le fichier dans l’Explorateur de solutions, cliquez dessus avec le bouton droit et sélectionnez Définir comme fichier de démarrage.

Fichiers liés

Les fichiers liés sont les fichiers placés dans un projet, mais qui se trouvent généralement en dehors des dossiers du projet de l’application. Ces fichiers apparaissent dans l’Explorateur de solutions comme des fichiers normaux avec une icône de raccourci superposée :

Les fichiers liés sont spécifiés dans le fichier .pyproj à l’aide de l’élément <Compile Include="...">. Les fichiers liés sont implicites s’ils utilisent un chemin relatif en dehors de la structure de répertoires. Si les fichiers utilisent des chemins d’accès dans l’Explorateur de solutions, les fichiers liés sont explicites. L’exemple suivant montre des fichiers explicitement liés :

<Compile Include="..\test2.py">
    <Link>MyProject\test2.py</Link>
</Compile>

Les fichiers liés sont ignorés dans les conditions suivantes :

  • Le fichier lié contient les métadonnées Link et le chemin d’accès spécifié dans l’attribut Include se trouve dans le répertoire du projet.
  • Le fichier lié duplique un fichier qui existe dans l’arborescence du projet.
  • Le fichier lié contient les métadonnées Link et le chemin Link est un chemin d’accès relatif en dehors de la hiérarchie du projet.
  • Le chemin de lien est associé à une racine.

Utiliser des fichiers liés

Pour ajouter un élément existant en tant que lien, cliquez avec le bouton droit sur le dossier du projet dans lequel vous voulez ajouter le fichier, puis sélectionnez Ajouter>Élément existant. Dans la boîte de dialogue, sélectionnez un fichier, puis Ajouter>Ajouter en tant que lien. Si aucun fichier n’est en conflit, cette commande crée un lien dans le dossier sélectionné. Toutefois, le lien n’est pas ajouté s’il existe un fichier portant le même nom ou si un lien vers ce fichier existe déjà dans le projet.

Si vous tentez de créer un lien vers un fichier qui existe déjà dans les dossiers du projet, le fichier est ajouté en tant que fichier normal et non en tant que lien. Pour convertir un fichier en lien, sélectionnez Fichier>Enregistrer sous pour enregistrer le fichier à un emplacement en dehors de la hiérarchie du projet. Visual Studio convertit automatiquement le fichier en lien. De même, un lien peut être reconverti en fichier à l’aide de Fichier>Enregistrer sous pour enregistrer le fichier quelque part dans l’arborescence du projet.

Si vous déplacez un fichier lié dans l’Explorateur de solutions, le lien est déplacé, mais le fichier en lui-même n’est pas affecté. De même, la suppression d’un lien supprime le lien sans affecter le fichier.

Les fichiers liés ne peuvent pas être renommés.

Références

Les projets Visual Studio prennent en charge l’ajout de références aux projets et aux extensions, qui apparaissent sous le nœud Références dans l’Explorateur de solutions :

Capture d’écran montrant comment ajouter une référence d’extension dans des projets Python dans Visual Studio.

En général, les références d’extension indiquent les dépendances entre les projets et sont utilisées pour proposer IntelliSense au moment de la conception ou lors de la création de lien au moment de la compilation. Les projets Python utilisent des références de la même manière, mais en raison de la nature dynamique de Python, elles sont principalement utilisées au moment de la conception pour proposer des fonctionnalités IntelliSense améliorées. Elles peuvent également servir pour le déploiement sur Microsoft Azure dans le but d’installer d’autres dépendances.

Utiliser des modules d’extension

Une référence à un fichier .pyd permet d’activer IntelliSense pour le module généré. Visual Studio charge le fichier .pyd dans l’interpréteur Python et pratique une introspection de ses types et fonctions. Visual Studio essaie également d’analyser les chaînes de document des fonctions afin de fournir une assistance pour la signature.

Si le module d’extension est mis à jour sur le disque, Visual Studio réanalyse le module en arrière-plan. Cette action n’a aucun effet sur le comportement de l’exécution, mais certaines saisies semi-automatiques ne sont pas disponibles tant que l’analyse n’est pas terminée.

Vous devrez probablement ajouter un chemin de recherche dans le dossier qui contient le module.

Utiliser des projets .NET

Quand vous utilisez IronPython, vous pouvez ajouter des références aux assemblys .NET pour activer IntelliSense. Pour les projets .NET dans votre solution, cliquez avec le bouton droit sur le nœud Références de votre projet Python et sélectionnez Ajouter une référence. Dans la boîte de dialogue, sélectionnez l’onglet Projets et accédez au projet souhaité. Pour les DLL que vous avez téléchargés séparément, sélectionnez plutôt l’onglet Parcourir et accédez au DLL de votre choix.

Les références dans IronPython n’étant pas disponibles avant la fin d’un appel à la méthode clr.AddReference('<AssemblyName>'), vous devez également ajouter un appel à la méthode clr.AddReference approprié à l’assembly. Cet appel est généralement ajouté au début de votre code. Par exemple, le code créé par le modèle de projet Application Windows Forms IronPython (disponible dans Visual Studio 2019) dans Visual Studio comporte deux appels en haut du fichier :

import clr
clr.AddReference('System.Drawing')
clr.AddReference('System.Windows.Forms')

from System.Drawing import *
from System.Windows.Forms import *

# Other code omitted

Utiliser des projets WebPI

Vous pouvez ajouter des références aux entrées de produit WebPI (Web Platform Installer) pour les déploiements sur Microsoft Azure Cloud Services où vous pouvez installer d’autres composants via le flux WebPI. Par défaut, le flux affiché est spécifique à Python et inclut Django, CPython et d’autres composants de base. Vous pouvez également sélectionner votre propre flux, comme illustré dans l’image suivante. Lorsque vous publiez sur Microsoft Azure, une tâche d’installation installe tous les produits référencés.

Important

Les projets WebPI ne sont pas disponibles dans Visual Studio 2017 ni dans Visual Studio 2019.

Capture d’écran montrant les références Web Platform Installer (WebPI) dans Visual Studio.