Condividi tramite


Eseguire le pipeline con gli ambienti Anaconda

Servizi di Azure DevOps

Informazioni su come configurare e usare Anaconda con Python nella pipeline. Anaconda è una distribuzione Python per data science e Machine Learning.

Inizia

Seguire queste istruzioni per configurare una pipeline per un'app Python di esempio con ambiente Anaconda.

  1. Accedere all'organizzazione di Azure DevOps e passare al progetto.

  2. Nel progetto passare alla pagina Pipeline. Poi scegliere l'azione per creare una nuova pipeline.

  3. Eseguire i passaggi della procedura guidata selezionando prima di tutto GitHub come posizione del codice sorgente.

  4. Si potrebbe essere reindirizzati a GitHub per l'accesso. In questo caso, immettere le credenziali di GitHub.

  5. Quando viene visualizzato l'elenco dei repository, selezionare il repository di esempio Anaconda.

  6. Azure Pipelines analizzerà il codice nel repository e rileverà un file esistente azure-pipelines.yml .

  7. Selezionare Esegui.

  8. Viene avviata una nuova esecuzione. Attendere che l'esecuzione finisca.

Suggerimento

Per apportare modifiche al file YAML come descritto in questo argomento, selezionare la pipeline nella pagina Pipeline e quindi Modificare il azure-pipelines.yml file.

Aggiungere conda al percorso di sistema

Negli agenti ospitati, conda è escluso per impostazione predefinita per evitare conflitti tra la sua versione di Python e altre versioni installate. Il task.prependpath comando agent lo renderà disponibile per tutti i passaggi successivi.

- bash: echo "##vso[task.prependpath]$CONDA/bin"
  displayName: Add conda to PATH

Crea un ambiente

Dagli argomenti della riga di comando

Il comando conda create crea un ambiente con gli argomenti che gli passi.

- bash: conda create --yes --quiet --name myEnvironment
  displayName: Create Anaconda environment

Da YAML

È possibile archiviare un environment.yml file nel repository che definisce la configurazione per un ambiente Anaconda.

- script: conda env create --quiet --file environment.yml
  displayName: Create Anaconda environment

Nota

Se si usa un agente self-hosted e non si rimuove l'ambiente alla fine, verrà visualizzato un errore nella compilazione successiva perché l'ambiente esiste già. Per risolvere il problema, usare l'argomento --force : conda env create --quiet --force --file environment.yml.

Nota

Se si usano agenti self-hosted che condividono l'archiviazione e si eseguono processi in parallelo usando gli stessi ambienti Anaconda, potrebbero verificarsi conflitti tra tali ambienti. Per risolvere, usare l'argomento --name e un identificatore univoco come valore dell'argomento, ad esempio una concatenazione con la variabile di compilazione $(Build.BuildNumber).

Installare pacchetti da Anaconda

Il codice YAML seguente installa il scipy pacchetto nell'ambiente conda denominato myEnvironment.

- bash: |
    source activate myEnvironment
    conda install --yes --quiet --name myEnvironment scipy
  displayName: Install Anaconda packages

Eseguire i passaggi della pipeline in un ambiente Anaconda

Nota

Ogni passaggio di compilazione viene eseguito nel proprio processo. Quando si attiva un ambiente Anaconda, verrà modificato PATH e apporterà altre modifiche al processo corrente. Pertanto, un ambiente Anaconda deve essere attivato separatamente per ogni passaggio.

- bash: |
    source activate myEnvironment
    python -m pytest --junitxml=junit/unit-test.xml
  displayName: pytest

- task: PublishTestResults@2
  inputs:
    testResultsFiles: 'junit/*.xml'
  condition: succeededOrFailed()

Domande frequenti

Perché viene visualizzato un errore "Autorizzazione negata"?

In Hosted macOS l'utente dell'agente non ha la proprietà della directory in cui è installato Miniconda. Per una correzione, vedere la scheda "Hosted macOS" in Add conda to your system path (Aggiungi conda al percorso di sistema).

Perché la mia compilazione cessa di funzionare in un passaggio conda create o un passaggio conda install?

Se si dimentica di passare --yes, conda si arresterà e attenderà l'interazione dell'utente.

Perché lo script su Windows si interrompe dopo l'attivazione dell'ambiente?

Su Windows, activate è uno script batch. È necessario usare il comando per riprendere l'esecuzione call dello script dopo l'attivazione. Vedi esempi di utilizzo callin una pipeline.

Come è possibile eseguire i test con più versioni di Python?

Consulta Crea app Python in Azure Pipelines.