Gestire i pacchetti Python necessari con requirements.txt

Se si condivide il progetto Python con altri utenti o si usa un sistema di compilazione per produrre l'applicazione Python, è necessario specificare eventuali pacchetti esterni necessari. Quando si prevede di copiare il progetto in altre posizioni in cui è necessario ripristinare un ambiente, è necessario definire anche i pacchetti dipendenti necessari.

L'approccio consigliato per specificare pacchetti Python dipendenti esterni consiste nell'usare un file di requisiti (readthedocs.org). Questo file contiene un elenco di comandi pip che installano le versioni necessarie dei pacchetti dipendenti per il progetto. Il comando più comune è pip freeze > requirements.txt. Questo comando registra l'elenco di pacchetti corrente dell'ambiente nel requirements.txt file.

Un file dei requisiti contiene versioni precise di tutti i pacchetti installati. È possibile usare i file dei requisiti per bloccare i requisiti di un ambiente. Usando versioni precise dei pacchetti, è possibile riprodurre facilmente l'ambiente in un altro computer. I file dei requisiti includono pacchetti anche se sono installati con un intervallo di versioni, come dipendenza di un altro pacchetto o con un programma di installazione diverso da pip.

Prerequisiti

Tecnicamente, qualsiasi nome file può essere usato per tenere traccia dei requisiti. Tuttavia, Visual Studio offre supporto specifico per il file dei requisiti denominato "requirements.txt". È possibile usare l'argomento -r <full path to file> quando si installa un pacchetto per specificare il nome preferito per il file.

Installare le dipendenze elencate in requirements.txt

Se si carica un progetto con un requirements.txt file, è possibile installare tutte le dipendenze del pacchetto elencate nel file.

  1. In Esplora soluzioni espandere il progetto e quindi espandere il nodo Ambienti Python.

  2. Individuare il nodo dell'ambiente per cui si vogliono installare i pacchetti. Fare clic con il pulsante destro del mouse sul nodo e scegliere Installa da requirements.txt.

    Screenshot che mostra come installare i pacchetti Python da un file di testo dei requisiti in Visual Studio 2019.

    Screenshot che mostra come installare i pacchetti Python da un file di testo dei requisiti in Visual Studio 2022.

  3. È possibile monitorare il processo di installazione del pacchetto nella finestra Output :

    Screenshot che mostra l'output dell'installazione dei pacchetti Python da un file di testo dei requisiti.

    L'output elenca tutti i pacchetti necessari installati, insieme agli eventuali aggiornamenti necessari per i comandi pip interessati e la disponibilità delle versioni pip più recenti.

Installare le dipendenze in un ambiente virtuale

È anche possibile installare le dipendenze del pacchetto Python in un ambiente virtuale esistente.

  1. In Esplora soluzioni espandere il progetto e quindi espandere il nodo Ambienti Python.

  2. Individuare il nodo dell'ambiente virtuale per cui si vogliono installare i pacchetti. Fare clic con il pulsante destro del mouse sul nodo e scegliere Installa da requirements.txt.

Se è necessario creare un ambiente virtuale, vedere Usare ambienti virtuali.

Generare il file requirements.txt

Se tutti i pacchetti Python necessari per il progetto sono già installati in un ambiente, è possibile generare il requirements.txt file in Visual Studio.

  1. In Esplora soluzioni espandere il progetto e quindi espandere il nodo Ambienti Python.

  2. Individuare il nodo dell'ambiente per il quale si vuole generare il file dei requisiti. Fare clic con il pulsante destro del mouse sul nodo e scegliere Genera requirements.txt.

    Screenshot che mostra come generare un file di testo dei requisiti per le dipendenze del pacchetto Python in Visual Studio 2019.

    Screenshot che mostra come generare un file di testo dei requisiti per le dipendenze del pacchetto Python in Visual Studio 2022.

Aggiornare o aggiungere voci a un file di requirements.txt esistente

Se il requirements.txt file esiste già, Visual Studio visualizza una richiesta con diverse opzioni:

Screenshot della richiesta visualizzata quando il file di testo dei requisiti esiste già, con opzioni per aggiornare o aggiungere voci o sostituire il file.

  • Sostituisci l'intero file: sovrascrivere tutti gli elementi, i commenti e le opzioni definiti nel requirements.text file.
  • Aggiornare le voci esistenti: aggiornare gli identificatori di versione nel requirements.text file in modo che corrispondano alla versione attualmente installata.
  • Aggiornare e aggiungere voci: aggiornare i requisiti esistenti nel requirements.text file e aggiungere tutti i nuovi requisiti del pacchetto alla fine del file.

Visual Studio viene eseguito pip per rilevare i requisiti correnti del pacchetto per l'ambiente e quindi aggiornare il requirements.txt file in base alla selezione.

Installare manualmente le dipendenze dei pacchetti

Se pip non installa una dipendenza del pacchetto definita nel requirements.txt file, l'intera installazione non riesce.

Sono disponibili due opzioni per risolvere questo problema:

  • Modificare manualmente il requirements.txt file per escludere il pacchetto non riuscito e quindi eseguire di nuovo il processo di installazione.

  • Usare le opzioni del comando pip per fare riferimento a una versione installabile del pacchetto.

Aggiornare il file dei requisiti con pip wheel

Se si usa il pip wheel comando per compilare una dipendenza, è possibile aggiungere l'opzione --find-links <path> al requirements.txt file.

  1. Chiamare il pip wheel comando per compilare l'elenco delle dipendenze necessarie:

    pip wheel azure
    

    L'output mostra le ruote create per i pacchetti raccolti:

    Downloading/unpacking azure
        Running setup.py (path:C:\Project\env\build\azure\setup.py) egg_info for package azure
    
    Building wheels for collected packages: azure
        Running setup.py bdist_wheel for azure
        Destination directory: c:\project\wheelhouse
    Successfully built azure
    Cleaning up...
    
  2. Aggiungere le find-links opzioni e no-index , insieme al requisito della versione del pacchetto, al requirements.txt file:

    type requirements.txt
    --find-links wheelhouse
    --no-index
    azure==0.8.0
    
  3. Eseguire il processo di installazione pip con il file dei requisiti aggiornato:

    pip install -r requirements.txt -v
    

    L'output tiene traccia dello stato di avanzamento del processo di installazione:

    Downloading/unpacking azure==0.8.0 (from -r requirements.txt (line 3))
        Local files found: C:/Project/wheelhouse/azure-0.8.0-py3-none-any.whl
    Installing collected packages: azure
    Successfully installed azure
    Cleaning up...
        Removing temporary dir C:\Project\env\build...