使用 Anaconda 環境執行管線
Azure DevOps Services
瞭解如何在管線中設定及使用 Anaconda 與 Python。 Anaconda 是適用于資料科學和機器學習的 Python 散發套件。
開始使用
請遵循這些指示,使用 Anaconda 環境為範例 Python 應用程式設定管線。
登入您的 Azure DevOps 組織,然後瀏覽至您的專案。
在您的專案中,瀏覽至 [管線] 頁面。 然後,選擇用來建立新管線的動作。
先選取 GitHub 作為原始程式碼的位置,以逐步完成精靈的步驟。
系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入您的 GitHub 認證。
當存放庫清單出現時,請選取您的 Anaconda 範例存放庫。
Azure Pipelines 會分析存放庫中的程式碼,並偵測現有的
azure-pipelines.yml
檔案。選取 [執行]。
新的執行隨即啟動。 等待執行完成。
提示
若要變更本主題中所述的 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 來執行測試?
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應