分享方式:


使用 Anaconda 環境執行管線

Azure DevOps Services

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

開始使用

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

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

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

  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()

常見問題集

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

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

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

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

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

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

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

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