Databricks アプリには、Python依存関係、Node.js 依存関係、またはその両方を含めることができます。 アプリの展開時にインストールAzure Databricks言語固有のファイルで依存関係を宣言します。
-
pipでインストールされた Python パッケージには、requirements.txtファイルを使用します。 「pipを使用した Python の依存関係の定義」を参照してください。 -
uvでインストールされた Python パッケージには、pyproject.tomlファイルを使用します。 「uvを使用した Python の依存関係の定義」を参照してください。 -
npmまたはpnpmでインストールした Node.js パッケージには、package.jsonファイルを使用します。 「 依存関係 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 では、Corepack を通じて 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 のネットワークの構成を参照してください。
Unity カタログ ボリュームからホイール ファイルをインストールする
Unity カタログ ボリュームに格納されているホイール ファイルから Python パッケージをインストールするには:
- Unity カタログ ボリュームをリソースとしてアプリに追加します。 Unity カタログボリュームを参照してください。
-
requirements.txtでフル ホイール ファイル パスを直接参照します。
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl
注
環境変数参照は、 requirements.txtではサポートされていません。 フル ホイール ファイル パスをハードコーディングする必要があります。
外部パッケージ リポジトリにアクセスするときのセキュリティを強化するには、サーバーレスエグレス制御を使用してパブリック リポジトリへのアクセスを制限し、プライベート ネットワークを構成します。 Databricks Apps のネットワークの構成を参照してください。