Anaconda 環境でパイプラインを実行する
Azure DevOps Services
パイプラインで Python で Anaconda を設定して使用する方法について説明します。 Anaconda は、データ サイエンスと機械学習用の Python ディストリビューションです。
はじめに
Anaconda 環境を使用してサンプル Python アプリのパイプラインを設定するには、次の手順に従います。
Azure DevOps 組織にサインインし、プロジェクトに移動します。
プロジェクト内で、 [パイプライン] ページに移動します。 次に、新しいパイプラインを作成するためのアクションを選択します。
最初に、ソース コードの場所として GitHub を選択し、ウィザードの手順を実行します。
サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。
リポジトリの一覧が表示されたら、Anaconda サンプル リポジトリを選択します。
Azure Pipelines は、リポジトリ内のコードを分析し、既存
azure-pipelines.yml
のファイルを検出します。[実行] を選択します。
新しい実行が開始されます。 実行が終了するまで待ちます。
ヒント
このトピックの説明に従って YAML ファイルを変更するには、[ パイプライン ] ページでパイプラインを選択し、ファイルを 編集 します azure-pipelines.yml
。
システム パスに conda を追加する
ホストされているエージェントでは、Python バージョンが他のPATH
インストール済みバージョンと競合しないように、conda は既定では使用されません。 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 から
Anaconda 環境の構成をenvironment.yml
定義するリポジトリにファイルをチェックできます。
- 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 は、 という名前myEnvironment
の scipy
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 を追加する」の下の「Hosted macOS」タブを参照してください。
ビルドが または conda install
ステップで応答しなくなるのはconda create
なぜですか?
を渡 --yes
すのを忘れた場合、conda は停止し、ユーザーの操作を待機します。
環境をアクティブ化した後、Windows 上のスクリプトが停止するのはなぜですか?
Windows では、 activate
は Batch スクリプトです。 アクティブ化後にスクリプトの call
実行を再開するには、 コマンドを使用する必要があります。
パイプラインでの の使用call
例を参照してください。
複数のバージョンの Python でテストを実行するにはどうすればよいですか?
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示