Progetti Python in Visual Studio

Le applicazioni Python vengono in genere definite usando solo cartelle e file. Questa struttura può diventare complessa man mano che le applicazioni aumentano e, ad esempio, comportano file generati automaticamente, JavaScript per applicazioni Web e così via. Un progetto di Visual Studio consente di gestire la complessità. Il progetto (un .pyproj file) identifica tutti i file di origine e di contenuto associati al progetto. Contiene informazioni di compilazione per ogni file, mantiene le informazioni da integrare con i sistemi di controllo del codice sorgente e consente di organizzare l'applicazione in componenti logici.

Screenshot che mostra un progetto Python aperto in Esplora soluzioni in Visual Studio.

I progetti vengono sempre gestiti all'interno di una soluzione di Visual Studio. Una soluzione può contenere un numero qualsiasi di progetti che potrebbero farvi riferimento, ad esempio un progetto Python che fa riferimento a un progetto C++ che implementa un modulo di estensione. Con questa relazione, Visual Studio genera automaticamente il progetto C++ (se necessario) quando si avvia il debug del progetto di Python. Per altre informazioni, vedere Soluzioni e progetti in Visual Studio.

Visual Studio offre vari modelli di progetto Python per creare rapidamente diversi tipi di strutture dell'applicazione. È possibile scegliere un modello per creare un progetto da un albero di cartelle esistente o creare un progetto pulito e vuoto. Per un elenco dei modelli disponibili, vedere la tabella nella sezione Modelli di progetto.

Suggerimenti per l'uso di progetti Python

Non è necessario usare i progetti per eseguire codice Python in Visual Studio, ma ci sono vantaggi per farlo. Quando si inizia, esaminare le considerazioni seguenti sull'uso di progetti e Python.

  • In Visual Studio 2019 e versioni successive è possibile aprire una cartella con codice Python ed eseguire il codice senza creare file di progetto e soluzione di Visual Studio.

    I passaggi guidati per questo approccio sono disponibili nell'articolo Avvio rapido: Aprire ed eseguire codice Python in una cartella .

  • Non è necessario un progetto per eseguire codice Python in Visual Studio. Tutte le versioni di Visual Studio funzionano correttamente con il codice Python.

    È possibile aprire un file Python e accedere immediatamente alle funzionalità di completamento automatico, IntelliSense e debug. Esistono tuttavia alcuni potenziali svantaggi per l'uso del codice senza un progetto:

    • Poiché il codice usa sempre l'ambiente globale predefinito, è possibile che vengano visualizzati completamenti non corretti o errori se il codice è destinato a un ambiente diverso.
    • Visual Studio analizza tutti i file e i pacchetti nella cartella da cui viene aperto il singolo file. Questo processo può richiedere un notevole tempo di CPU.
  • È possibile creare un progetto di Visual Studio dal codice esistente. Questo approccio è descritto nella sezione Creare un progetto da file esistenti.

Attività di base del progetto: file, ambienti e avvio

Quando si usano progetti con il codice Python, si completano le attività di base, tra cui l'aggiunta di file, l'assegnazione di un file di avvio e l'impostazione dell'ambiente interprete Python.

Durante lo sviluppo dell'applicazione, in genere è necessario aggiungere nuovi file di tipi diversi al progetto. È facile aggiungere altri file. Fare clic con il pulsante destro del mouse sul progetto, scegliere Aggiungi>elemento esistente e individuare il tipo di file da aggiungere. L'opzione Aggiungi>nuovo elemento apre una finestra di dialogo che mostra i modelli di elemento che è possibile usare per creare il nuovo file. Le opzioni includono file Python vuoti, una classe Python, uno unit test e vari file correlati alle applicazioni Web. È possibile esplorare le opzioni del modello con un progetto di test per scoprire cosa è disponibile nella versione di Visual Studio. Per altre informazioni, vedere le informazioni di riferimento sui modelli di elemento.

Ogni progetto Python ha un file di avvio assegnato, visualizzato in grassetto in Esplora soluzioni. Il file di avvio viene eseguito quando si inizia il debug (selezionando F5 o Debug>Avvia debug) o quando si esegue il progetto nella finestra Interattiva. È possibile aprire questa finestra con i tasti di scelta rapida MAIUSC + ALT + F5 oppure selezionando Debug>Esegui progetto in Python Interattivo. Per modificare il file di avvio, fare clic con il pulsante destro del mouse sul file da usare e scegliere Imposta come elemento di avvio (o Imposta come file di avvio nelle versioni precedenti di Visual Studio).

Se si rimuove il file di avvio selezionato da un progetto e non si seleziona un file alternativo, Visual Studio non conosce il file Python da usare per avviare il progetto. In questo caso, Visual Studio 2017 versione 15.6 e successive visualizza un errore. Le versioni precedenti aprono una finestra di output con l'interprete Python in esecuzione oppure viene visualizzata la finestra di output e quindi viene chiusa immediatamente. In presenza di questi comportamenti, verificare che sia stato assegnato un file di avvio.

Suggerimento

Per mantenere aperta la finestra di output, fare clic con il pulsante destro del mouse sul progetto e scegliere Proprietà. Nella finestra di dialogo selezionare la scheda Debug e quindi aggiungere il -i flag al campo Argomenti interprete. Questo argomento fa sì che l'interprete entri in modalità interattiva al termine di un programma. La finestra rimane aperta fino a chiuderla, ad esempio usando i tasti di scelta rapida CTRL+E+INVIO.

Un nuovo progetto è sempre associato all'ambiente Python globale predefinito. Per associare il progetto a un ambiente diverso (inclusi gli ambienti virtuali), fare clic con il pulsante destro del mouse sul nodo Ambienti Python nel progetto. Selezionare Aggiungi ambiente e quindi selezionare gli ambienti desiderati. È anche possibile usare il controllo a discesa ambienti sulla barra degli strumenti per selezionare un ambiente o aggiungere un altro ambiente al progetto.

Screenshot che mostra il comando Aggiungi ambiente sulla barra degli strumenti python in Visual Studio.

Per modificare l'ambiente attivo, fare clic con il pulsante destro del mouse sull'ambiente desiderato in Esplora soluzioni e selezionare Attiva ambiente come illustrato nell'immagine seguente. Per altre informazioni, vedere Selezionare un ambiente per un progetto.

Screenshot che mostra come attivare un ambiente per un progetto Python in Visual Studio.

Modelli di progetto

Visual Studio offre molti modi per configurare un progetto Python, da zero o da codice esistente. Per usare un modello, selezionare File>Nuovo>progetto oppure fare clic con il pulsante destro del mouse sulla soluzione in Esplora soluzioni e scegliere Aggiungi>nuovo progetto. Nella finestra di dialogo del nuovo progetto è possibile visualizzare modelli specifici di Python eseguendo una ricerca in Python o selezionando il nodo Python del linguaggio>:

Screenshot che mostra la finestra di dialogo del nuovo progetto con i modelli Python disponibili in Visual Studio.

I modelli seguenti sono disponibili in Visual Studio versione 2022.

Modello Descrizione
Da codice Python esistente Crea un progetto di Visual Studio da codice Python esistente in una struttura di cartelle.
Applicazione Python Fornisce una struttura di progetto di base per una nuova applicazione Python con un singolo file di origine vuoto. Per impostazione predefinita, il progetto viene eseguito nell'interprete della console dell'ambiente globale predefinito. È possibile modificare l'assegnazione di un ambiente diverso.
Progetti Web Progetti per le app Web basati su diversi framework, tra cui Bottle, Django e Flask.
Applicazione in background (IoT) Supporta la distribuzione di progetti Python per l'esecuzione nei dispositivi come servizi in background. Per altre informazioni, vedere Windows IoT Dev Center.
Modulo di estensione Python Questo modello viene visualizzato in Visual C++ se si installano gli strumenti di sviluppo nativi Python con il carico di lavoro Python in Visual Studio 2017 o versione successiva (vedere Installazione). Il modello fornisce la struttura di base per una DLL di estensione C++, simile alla struttura descritta in Creare un'estensione C++ per Python.

I modelli seguenti sono disponibili in Visual Studio versione 2019. Non tutti i modelli disponibili nella versione 2019 sono disponibili nelle versioni precedenti di Visual Studio.

Modello Descrizione
Da codice Python esistente Crea un progetto di Visual Studio da codice Python esistente in una struttura di cartelle.
Applicazione Python Fornisce una struttura di progetto di base per una nuova applicazione Python con un singolo file di origine vuoto. Per impostazione predefinita, il progetto viene eseguito nell'interprete della console dell'ambiente globale predefinito. È possibile modificare l'assegnazione di un ambiente diverso.
Progetti Web Progetti per le app Web basati su diversi framework, tra cui Bottle, Django e Flask.
Applicazione in background (IoT) Supporta la distribuzione di progetti Python per l'esecuzione nei dispositivi come servizi in background. Per altre informazioni, vedere Windows IoT Dev Center.
Modulo di estensione Python Questo modello viene visualizzato in Visual C++ se si installano gli strumenti di sviluppo nativi Python con il carico di lavoro Python in Visual Studio 2017 o versione successiva (vedere Installazione). Il modello fornisce la struttura di base per una DLL di estensione C++, simile alla struttura descritta in Creare un'estensione C++ per Python.
Applicazione IronPython Usa IronPython per impostazione predefinita e abilita l'interoperabilità .NET e il debug in modalità mista con i linguaggi .NET. Questo modello è simile al modello applicazione Python.
Applicazione WPF IronPython Fornisce una struttura di progetto usando IronPython con i file XAML di Windows Presentation Foundation per l'interfaccia utente dell'applicazione. Visual Studio offre una finestra di progettazione dell'interfaccia utente XAML, il code-behind può essere scritto in Python e l'applicazione viene eseguita senza visualizzare alcuna console.
Pagina Web IronPython Silverlight Crea un progetto IronPython che viene eseguito in un browser usando Silverlight. Il codice Python dell'applicazione è incluso nella pagina Web come script. Un tag di script boilerplate esegue il pull del codice JavaScript per inizializzare IronPython in esecuzione all'interno di Silverlight, da cui il codice Python può interagire con il DOM.
Windows Forms Application IronPython Compila una struttura di progetto con IronPython e l'interfaccia utente creata usando il codice con Windows Form. L'applicazione viene eseguita senza visualizzare alcuna console.

Nota

Poiché Python è un linguaggio interpretato, i progetti Python in Visual Studio non producono un eseguibile autonomo come altri progetti di linguaggio compilati, ad esempio C#. Per altre informazioni, vedere le domande e risposte.

Creare un progetto da file esistenti

Seguire questa procedura per creare un progetto da file esistenti.

Importante

Il processo seguente non sposta o copia i file di origine originali. Se si vuole usare una copia dei file, duplicare prima la cartella e quindi creare il progetto.

  1. Avviare Visual Studio e selezionare File>Nuovo>Progetto.

  2. Nella finestra di dialogo Crea un nuovo progetto cercare Python e selezionare il modello di codice From Existing Python (Da codice Python esistente) e selezionare Next (Avanti).

  3. Nella finestra di dialogo Configura il nuovo progetto immettere un nome e un percorso del progetto, scegliere la soluzione da contenere e selezionare Crea.

  4. Nella procedura guidata Crea nuovo progetto da codice Python esistente impostare il percorso Cartella sul codice esistente, impostare un filtro per i tipi di file e specificare i percorsi di ricerca richiesti dal progetto, quindi selezionare Avanti. Se non si conoscono i percorsi di ricerca, lasciare vuoto il campo.

    Screenshot di una creazione di nuovo progetto da Codice esistente, inclusa la scelta del percorso della cartella, i filtri del tipo di file e i percorsi di ricerca.

  5. Nella pagina successiva selezionare il file di avvio per il progetto. Visual Studio seleziona l'interprete e la versione Python globali predefiniti. È possibile modificare l'ambiente usando il menu a discesa. Al termine, selezionare Avanti.

    Nota

    La finestra di dialogo mostra solo i file nella cartella radice. Se il file desiderato si trova in una sottocartella, lasciare vuoto il file di avvio. È possibile impostare il file di avvio in Esplora soluzioni, come descritto in un passaggio successivo.

    Screenshot della finestra Creazione nuovo progetto dalla finestra Codice esistente, inclusa la scelta del file di avvio e dell'ambiente Python.

  6. Selezionare il percorso in cui archiviare il file di progetto (file con estensione pyproj su disco). Se applicabile, è anche possibile includere la funzionalità automatica degli ambienti virtuali e personalizzare il progetto per framework Web diversi. Se non si è certi di queste opzioni, lasciare i campi impostati sulle impostazioni predefinite.

    Screenshot di una creazione di nuovo progetto dalla finestra Codice esistente, incluso il percorso del file di progetto e altre impostazioni facoltative.

  7. Selezionare Fine.

    Visual Studio crea il progetto e lo apre in Esplora soluzioni. Se si desidera spostare il file con estensione pyproj in un percorso diverso, selezionare il file in Esplora soluzioni e quindi selezionare File>Salva con nome sulla barra degli strumenti. Questa azione aggiorna i riferimenti ai file nel progetto, ma non sposta alcun file di codice.

  8. Per impostare un file di avvio diverso, individuare il file in Esplora soluzioni, fare clic con il pulsante destro del mouse sul file e scegliere Imposta come file di avvio.

File collegati

Per file collegati si intendono i file importati in un progetto, ma che in genere si trovano all'esterno delle cartelle di progetto dell'applicazione. Questi file vengono visualizzati in Esplora soluzioni come file normali con un'icona di scelta rapida sovrapposta:

I file collegati vengono specificati nel .pyproj file usando l'elemento <Compile Include="..."> . I file collegati sono impliciti se usano un percorso relativo all'esterno della struttura di directory. Se i file usano percorsi all'interno di Esplora soluzioni, i file collegati sono espliciti. L'esempio seguente mostra i file collegati in modo esplicito:

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

I file collegati vengono ignorati nelle condizioni seguenti:

  • Il file collegato contiene Link metadati e il percorso specificato nell'attributo si trova all'interno Include della directory del progetto.
  • Il file collegato duplica un file esistente all'interno della gerarchia del progetto.
  • Il file collegato contiene Link metadati e il Link percorso è un percorso relativo all'esterno della gerarchia del progetto.
  • Il percorso del collegamento è rooted.

Usare file collegati

Per aggiungere un elemento esistente come collegamento, fare clic con il pulsante destro del mouse sulla cartella nel progetto in cui si desidera aggiungere il file e selezionare Aggiungi>elemento esistente. Nella finestra di dialogo selezionare un file e quindi selezionare Aggiungi>come collegamento. Se non sono presenti file in conflitto, questo comando crea un collegamento nella cartella selezionata. Tuttavia, il collegamento non viene aggiunto se nel progetto esiste già un file con lo stesso nome o un collegamento a tale file.

Se si tenta di collegare un file già esistente nelle cartelle di progetto, il file viene aggiunto come file normale e non come collegamento. Per convertire un file in un collegamento, selezionare File>Salva con nome per salvare il file in un percorso esterno alla gerarchia del progetto. Visual Studio converte automaticamente il file in un collegamento. Analogamente, è possibile usare File>Salva con nome anche per riconvertire un collegamento in un file e salvarlo in un punto qualsiasi all'interno della gerarchia del progetto.

Se si sposta un file collegato in Esplora soluzioni, viene spostato solo il collegamento, mentre il file effettivo rimane nella posizione originale. Analogamente, l'eliminazione di un collegamento implica solo la rimozione del collegamento e non del file.

I file collegati non possono essere rinominati.

Riferimenti

Nei progetti Visual Studio è possibile aggiungere riferimenti a progetti ed estensioni che figureranno nel nodo Riferimenti in Esplora soluzioni:

Screenshot che mostra come aggiungere un riferimento all'estensione nei progetti Python in Visual Studio.

I riferimenti alle estensioni indicano in genere le dipendenze tra progetti e vengono usati per fornire funzionalità IntelliSense in fase di progettazione o di collegamento in fase di compilazione. I progetti Python usano riferimenti in modo simile, ma a causa della natura dinamica di Python usata principalmente in fase di progettazione per offrire IntelliSense migliorato. Possono anche essere usati per la distribuzione in Microsoft Azure per installare altre dipendenze.

Usare i moduli di estensione

Un riferimento a un file .pyd consente di abilitare la funzionalità IntelliSense per il modulo generato. Visual Studio carica il .pyd file nell'interprete Python e ne introspetta i tipi e le funzioni. Visual Studio tenta anche di analizzare le stringhe del documento per le funzioni per fornire la Guida alla firma.

Se in qualsiasi momento il modulo di estensione viene aggiornato sul disco, Visual Studio analizza nuovamente il modulo in background. Questa azione non ha alcun effetto sul comportamento di runtime, ma alcuni completamenti non sono disponibili fino al completamento dell'analisi.

Potrebbe anche essere necessario aggiungere un percorso di ricerca alla cartella che contiene il modulo.

Usare progetti .NET

Quando si usa IronPython, è possibile aggiungere riferimenti ad assembly .NET per abilitare la funzionalità IntelliSense. Per i progetti .NET nella soluzione, fare clic con il pulsante destro del mouse sul nodo Riferimenti nel progetto Python e scegliere Aggiungi riferimento. Nella finestra di dialogo selezionare la scheda Progetti e passare al progetto desiderato. Per le DLL scaricate separatamente, selezionare invece la scheda Sfoglia e passare alla DLL desiderata.

Poiché i riferimenti in IronPython non sono disponibili fino a quando non viene eseguita una chiamata al metodo , è necessario aggiungere anche una chiamata al clr.AddReference('<AssemblyName>') metodo appropriata clr.AddReference all'assembly. Questa chiamata viene in genere aggiunta all'inizio del codice. Ad esempio, il codice creato dal modello di progetto IronPython Windows Form Application (disponibile in Visual Studio 2019) in Visual Studio include due chiamate all'inizio del file:

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

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

# Other code omitted

Usare progetti WebPI

È possibile aggiungere riferimenti alle voci del prodotto Web PLATFORM Installer (WebPI) per la distribuzione in Servizi cloud di Microsoft Azure in cui è possibile installare altri componenti tramite il feed WebPI. Per impostazione predefinita, il feed visualizzato è specifico di Python e include Django, CPython e altri componenti di base. È anche possibile selezionare il proprio feed, come illustrato nell'immagine seguente. Quando si pubblica in Microsoft Azure, un'attività di installazione installa tutti i prodotti a cui si fa riferimento.

Importante

I progetti WebPI non sono disponibili in Visual Studio 2017 o Visual Studio 2019.

Screenshot che mostra i riferimenti a Web Platform Installer (WebPI) in Visual Studio.