Databricks アプリには、Python依存関係、Node.js 依存関係、またはその両方を含めることができます。 アプリの展開時にインストールAzure Databricks言語固有のファイルで依存関係を宣言します。
-
requirements.txtでインストールされた Python パッケージには、pipファイルを使用します。 「pipを使用した Python の依存関係の定義」を参照してください。 -
pyproject.tomlでインストールされた Python パッケージには、uvファイルを使用します。 「uvを使用した Python の依存関係の定義」を参照してください。 -
package.jsonまたは でインストールしたnpmパッケージには、pnpmファイルを使用します。 「 依存関係 Node.js 定義する」を参照してください。
を使用して Python の依存関係を定義する pip
pipを使用するアプリには、一連の事前インストール済みの Python ライブラリが付属しています。 追加の Python ライブラリを定義するには、 requirements.txt ファイルを使用します。 一覧表示されているパッケージがプレインストールされているパッケージと一致する場合、ファイル内のバージョンが既定値をオーバーライドします。
標準アプリから変換された水平方向にスケーリングされたアプリ (ベータ) は、プレインストールされているライブラリをオプトアウトし、代わりにクリーンなベース OS イメージで実行できます。 Databricks アプリ向けのプリインストールされた Python ライブラリを除外するを参照してください。
例えば次が挙げられます。
# Override default version of dash
dash==2.10.0
# Add additional libraries not pre-installed
requests==2.31.0
numpy==1.24.3
# Specify a compatible version range
scikit-learn>=1.2.0,<1.3.0
プレインストールされた Python ライブラリ
pipベースのアプリには、次のプレインストールされたPython ライブラリが含まれています。 別のバージョンが必要な場合を除き、 requirements.txt に追加する必要はありません。
| 図書館 | バージョン |
|---|---|
| Databricks SQL コネクター | 3.4.0 |
| databricks-sdk(データブリックスSDK) | 0.33.0 |
| mlflow-skinny | 2.16.2 |
| gradio | 4.44.0 |
| streamlit | 1.38.0 |
| 光沢がある | 1.1.0 |
| ダッシュ | 2.18.1 |
| flask | 3.0.3 |
| fastapi | 0.115.0 |
| uvicorn[standard] | 0.30.6 |
| ガニーコーン (gunicorn) | 23.0.0 |
| huggingface-hub | 0.35.3 |
| dash-ag-grid | 31.2.0 |
| dash-mantine-components | 0.14.4 |
| dash-bootstrap-components (ダッシュ・ブートストラップ・コンポーネント) | 1.6.0 |
| plotly | 5.24.1 |
| plotly-resampler | 0.10.0 |
を使用して Python の依存関係を定義する uv
アプリで依存関係管理にuvを使用する場合は、pyproject.tomlではなく、requirements.txt ファイルで Python の依存関係を定義します。
uvベースのアプリにはプレインストール済みのライブラリは含まれていないため、 pyproject.tomlですべての依存関係を宣言する必要があります。 Python 3.11 を使用するrequires-pythonベースのアプリとは異なり、pip フィールドを使用して任意のPythonバージョンを指定することもできます。
これは、プレインストールされているライブラリからオプトアウトした水平方向にスケーリングされたアプリにも当てはまります。 Databricks アプリ向けのプリインストールされた Python ライブラリを除外するを参照してください。
デプロイ時に、Databricks Apps は、存在するファイルに基づいてインストール戦略を選択します。
-
requirements.txt存在する場合、pipも存在するかどうかに関係なく、アプリはpyproject.tomlを使用して依存関係をインストールします。requirements.txt常に優先されます。 -
requirements.txtが存在せず、pyproject.tomlとuv.lockの両方が存在する場合、アプリはuvを使用してロック ファイルから依存関係をインストールします。
uv インストーラーは独自の仮想環境を作成および管理するため、.venv ディレクトリを作成する必要はありません。
次の例は、Databricks アプリの最小 pyproject.toml を示しています。
[project]
name = "my-app"
requires-python = ">=3.11"
dependencies = [
"dash==2.10.0",
"requests==2.31.0",
]
uvを使用するには、uv.lockと共にpyproject.toml ファイルを含める必要があります。
uv lockローカルで実行して生成し、アプリ ディレクトリに含めます。
依存関係 Node.js 定義する
Node.js ライブラリを定義するには、アプリのルートに package.json ファイルを含めます。 Azure Databricksは、npmとpnpmの両方をサポートし、含めるロック ファイルに基づいてパッケージ マネージャーを選択します。
-
pnpm-lock.yamlが存在する場合、アプリはpnpmを使用します。 「pnpmの使用」を参照してください。 - それ以外の場合、アプリは
npmを使用します。 -
pnpm-lock.yamlとpackage-lock.jsonの両方が存在する場合は、pnpmが優先されます。
たとえば、Vite を使用する React アプリの package.json ファイルは次のようになります。
{
"name": "react-fastapi-app",
"version": "1.0.0",
"private": true,
"type": "module",
"scripts": {
"build": "npm run build:frontend",
"build:frontend": "vite build frontend"
},
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"typescript": "^5.0.0",
"vite": "^5.0.0",
"@vitejs/plugin-react": "^4.2.0",
"@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0"
}
}
注
ビルド ステップに必要なすべてのパッケージをdependenciesではなく、devDependenciesの下に一覧表示します。 環境変数で NODE_ENV=production を設定した場合、デプロイ プロセスでは devDependenciesのインストールはスキップされます。
使用 pnpm
pnpmを使用してビルドするには、pnpm-lock.yamlと共にpackage.json ファイルを含めます。
pnpm installローカルで実行して生成し、アプリ ディレクトリに含めます。 Azure Databricks では、pnpm を通じて が提供されます。
pnpm アプリの次の要件に注意してください。
- 依存関係は
pnpm install --frozen-lockfileと共にインストールされるため、pnpm-lock.yamlはpackage.jsonと同期している必要があります。 ずれが生じた場合、ロックファイルを更新する代わりにビルドは失敗します。 依存関係を変更した後、pnpm installを使用してロック ファイルを再生成します。 -
app.yamlで start コマンドを指定する必要があります。npmアプリとは異なり、pnpmアプリは既定のstartスクリプトにフォールバックしません。app.yamlを使用した Databricks アプリの実行の構成を参照してください。
pnpm ワークスペース プロジェクト(pnpm-workspace.yaml ファイルが存在する場合)では、一部の app.yaml コマンドが pnpm を再帰的に実行します。 たとえば、ビルドまたは開始ステップが pnpm -r run build実行される場合があります。 これらのコマンドは、入れ子になったコマンドが正しく解決されるように、corepack pnpmの代わりにpnpmを呼び出す必要があります。
バージョンの競合を回避する
バージョンの競合を回避するには、次のガイドラインに従ってください。
-
pipベースのアプリの場合、プレインストールされたパッケージをオーバーライドすると、指定したバージョンがプレインストールバージョンと大きく異なる場合、互換性の問題が発生する可能性があります。 - 常にアプリをテストして、パッケージバージョンの変更でエラーが発生しないことを確認してください。
-
requirements.txtで明示的なバージョンをピン留めすると、デプロイ間で一貫したアプリ動作を維持できます。 -
uvを使用する場合は、デプロイ全体で完全に再現可能なインストール用のuv.lockファイルを含めます。
依存関係のインストールと管理
Azure Databricksは、requirements.txt、pyproject.toml、およびpackage.jsonで定義されているライブラリを、専用コンピューティングで実行されているコンテナーに直接インストールします。 これらの依存関係の管理と修正プログラムの適用は、お客様の責任で行います。
依存関係ファイル内の複数のソースからライブラリを指定できます。
- PyPI や npm などのパブリック リポジトリからダウンロードされたライブラリ
- Azure Databricks シークレットに格納されている資格情報を使用して認証するプライベート リポジトリ
-
/Volumes/ディレクトリに格納されているライブラリ (/Volumes/<catalog>/<schema>/<volume>/<path>など)
プライベート リポジトリからインストールする
プライベート リポジトリからパッケージをインストールするには、認証用に環境変数を構成します。 たとえば、プライベート リポジトリを指す PIP_INDEX_URL を設定します。
env:
- name: PIP_INDEX_URL
valueFrom: my-pypi-secret
ワークスペース ネットワーク構成では、プライベート リポジトリへのアクセスを許可する必要があります。 Databricks Apps のネットワークの構成を参照してください。
ワークスペース レベルの既定のパッケージ リポジトリを使用する
Important
この機能は ベータ版です。 これを使用するには、ワークスペース管理者が [プレビュー] ページから Databricks Apps のワークスペース リポジトリ構成を有効にする必要があります。 Manage Azure Databricks プレビューを参照してください。
ワークスペース管理者がワークスペースの既定のパッケージ リポジトリを構成する場合、そのワークスペース内のアプリは、パブリック PyPI および npm レジストリではなく、ワークスペースで構成されたリポジトリからPythonおよび Node.js パッケージをインストールします。 これにより、アプリ開発者は、各アプリで構成を複製することなく、会社のパッケージ リポジトリ設定を自動的に継承しながら、アプリごとのオーバーライドを許可できます。
これらのワークスペース レベルの設定を構成するには、「 既定のパッケージ リポジトリを構成する」を参照してください。
Python パッケージ
ビルドのパッケージ インストール フェーズ中に、Databricks Apps は次の環境変数のワークスペース設定を継承します。
PIP_INDEX_URLPIP_EXTRA_INDEX_URLPIP_CERTUV_INDEX_URLUV_EXTRA_INDEX_URLSSL_CERT_FILE
アプリ固有の構成は、ワークスペースの既定値よりも優先されます。 アプリの app.yaml ファイルで上記の環境変数 (以下に示す証明書の設定を除く) を設定した場合、 app.yaml の値は、そのアプリのワークスペース設定をオーバーライドします。
注
PIP_CERT証明書とSSL_CERT_FILE証明書の設定では、ワークスペースで構成された値が常に使用され、app.yamlでオーバーライドすることはできません。
Warning
ワークスペース管理者がプレビューをオンにした後にアプリをテストし、別のインデックスからインストールし続ける必要がある場合は、PIP_INDEX_URLでapp.yamlを設定します。
Node.js パッケージ
ワークスペース管理者が既定の npm レジストリを構成すると、Databricks Apps はデプロイ時にワークスペース レジストリ構成をアプリの .npmrc ファイルに書き込みます。 これにより、アプリは、ワークスペースで構成されたレジストリから、プライベート パッケージを含む Node.js パッケージをインストールできます。各アプリは、独自のレジストリ URL または認証トークンを格納しません。
特定のアプリに別のレジストリを使用するには、アプリのNPMRC ファイルにapp.yaml環境変数を設定して、独自の npm 構成を参照します。 アプリ固有の構成は、ワークスペースの既定値よりも優先されます。
Unity カタログ ボリュームからホイール ファイルをインストールする
Unity カタログ ボリュームに格納されているホイール ファイルから Python パッケージをインストールするには:
- Unity カタログ ボリュームをリソースとしてアプリに追加します。 Unity カタログボリュームを参照してください。
-
requirements.txtで、ホイール ファイルの完全なパスに直接参照します。
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl
注
環境変数参照は、 requirements.txtではサポートされていません。 フル ホイール ファイル パスをハードコーディングする必要があります。
外部パッケージ リポジトリにアクセスするときのセキュリティを強化するには、サーバーレスエグレス制御を使用してパブリック リポジトリへのアクセスを制限し、プライベート ネットワークを構成します。 Databricks Apps のネットワークの構成を参照してください。