使用 Anaconda 環境執行管線

Azure DevOps Services

瞭解如何在管線中設定及使用 Anaconda 與 Python。 Anaconda 是適用于資料科學和機器學習的 Python 散發套件。

開始使用

請遵循這些指示,使用 Anaconda 環境為範例 Python 應用程式設定管線。

  1. 登入您的 Azure DevOps 組織,然後瀏覽至您的專案。

  2. 在您的專案中,瀏覽至 [管線] 頁面。 然後,選擇用來建立新管線的動作。

  3. 先選取 GitHub 作為原始程式碼的位置,以逐步完成精靈的步驟。

  4. 系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入您的 GitHub 認證。

  5. 當存放庫清單出現時,請選取您的 Anaconda 範例存放庫。

  6. Azure Pipelines 會分析存放庫中的程式碼,並偵測現有的 azure-pipelines.yml 檔案。

  7. 選取 [執行]。

  8. 新的執行隨即啟動。 等待執行完成。

提示

若要變更本主題中所述的 YAML 檔案,請在 [ 管線 ] 頁面中選取管線,然後 編輯azure-pipelines.yml 檔案。

將 conda 新增至您的系統路徑

託管的代理程式上,conda 預設會離開 PATH ,使其 Python 版本與其他已安裝的版本衝突。 task.prependpath代理程式命令會將它提供給所有後續步驟使用。

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

建立環境

從命令列引數

此命令 conda create 會使用您傳遞的引數來建立環境。

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

從 YAML

您可以將檔案 environment.yml 簽入存放庫,以定義 Anaconda 環境的組態。

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

注意

如果您使用自我裝載代理程式,且未在結尾移除環境,則因為環境已經存在,所以在下一個組建上會收到錯誤。 若要解析,請使用 --force 引數: conda env create --quiet --force --file environment.yml

注意

如果您使用共用儲存體的自我裝載代理程式,並使用相同的 Anaconda 環境平行執行作業,這些環境之間可能會發生衝突。 若要解析,請使用 自 --name 變數和唯一識別碼做為引數值,例如與 $(Build.BuildNumber) 建置變數的串連。

從 Anaconda 安裝套件

下列 YAML 會在 scipy 名為 myEnvironment 的 conda 環境中安裝套件。

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

在 Anaconda 環境中執行管線步驟

注意

每個建置步驟都會在其自己的進程中執行。 當您啟用 Anaconda 環境時,它會編輯 PATH 並對其目前程式進行其他變更。 因此,每個步驟都必須個別啟動 Anaconda 環境。

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

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

常見問題集

為什麼我收到「許可權遭拒」錯誤?

在 Hosted macOS 上,代理程式使用者沒有 Miniconda 安裝所在目錄的擁有權。 如需修正,請參閱 將 conda 新增至系統路徑底下的 [託管 macOS] 索引標籤。

為什麼我的組建在 或 conda install 步驟上 conda create 停止回應?

如果您忘記傳遞 --yes ,conda 將會停止並等候使用者互動。

為什麼 Windows 上的腳本會在啟動環境之後停止?

在 Windows 上, activate 是 Batch 腳本。 啟用之後,您必須使用 call 命令繼續執行腳本。 請參閱在管線中使用call 的範例。

如何使用多個版本的 Python 來執行測試?

請參閱 在 Azure Pipelines 中建置 Python 應用程式