メインコンテンツまでスキップ

Databricks アプリの依存関係を管理する

各 Databricks アプリには、Python、Node.js、またはその両方の依存関係を含めることができます。これらの依存関係は、言語固有のファイルで定義します。

Pythonの依存関係を定義する pip

pipを使用するアプリには、プリインストールされた Python ライブラリのセットが付属しています。追加のPythonライブラリを定義するには、 requirements.txtファイルを使用します。 リストされているパッケージの中に、既にインストールされているものと一致するものがある場合、ファイル内のバージョンがデフォルト設定を上書きします。

例えば:

# 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

0.33.0

mlflow-skinny

2.16.2

gradio

4.44.0

streamlit

1.38.0

shiny

1.1.0

dash

2.18.1

flask

3.0.3

fastapi

0.115.0

uvicorn[standard]

0.30.6

gunicorn

23.0.0

ハグフェイスハブ

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を使用している場合は、Python の依存関係をrequirements.txtではなくpyproject.tomlファイルで定義してください。uvベースのアプリでは、プリインストールされたライブラリは利用できません。pyproject.tomlですべての依存関係を宣言する必要があります。requires-pythonフィールドを使用すると、任意の Python バージョンを指定できます。これは、Python 3.11 を使用するpipベースのアプリとは異なります。

デプロイ時に、Databricks Appsは存在するファイルに基づいてインストール戦略を選択します。

  • requirements.txt存在する場合、 pyproject.tomlが存在するかどうかに関わらず、アプリはpipを使用して依存関係をインストールします。requirements.txt常に優先されます。
  • requirements.txt存在せず、 pyproject.tomluv.lockの両方が存在する場合、アプリはuvを使用してロックファイルから依存関係をインストールします。

uvインストーラーは独自の仮想環境を作成および管理するため、 .venvディレクトリを作成する必要はありません。

以下の例は、Databricksアプリの最小限のpyproject.tomlを示しています。

Toml
[project]
name = "my-app"
requires-python = ">=3.11"
dependencies = [
"dash==2.10.0",
"requests==2.31.0",
]

uvを使用するには、 pyproject.tomlと一緒にuv.lockファイルを含める必要があります。ローカルでuv lock実行して生成し、アプリディレクトリに含めてください。

Node.js依存関係を定義する

ライブラリを定義するには Node.js アプリのルートに package.json ファイルを含めます。 デプロイ中に、Databricks はこのファイルを検出し、 npm install を実行して、そのファイルにリストされているすべての依存関係をインストールします。

たとえば、Vite を使用する React アプリの package.json ファイルは次のようになります。

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"
}
}
注記

devDependenciesではなく、dependencies未満のnpm run buildに必要なすべてのパッケージをリストします。環境変数で NODE_ENV=production を設定すると、デプロイメント・プロセスは devDependenciesのインストールをスキップします。

バージョンの競合を回避

依存関係を定義する際には、以下の点に注意してください。

  • pipベースのアプリの場合、指定したバージョンがプリインストールされているバージョンと大きく異なると、プリインストールされているパッケージを上書きすると互換性の問題が発生する可能性があります。
  • 常にアプリをテストして、パッケージ バージョンの変更によってエラーが発生しないことを確認します。
  • requirements.txt で明示的なバージョンをピン留めすると、デプロイ間で一貫したアプリの動作を維持できます。
  • uvを使用する場合は、デプロイメント間で完全に再現可能なインストールを実現するために、 uv.lockファイルを含めてください。

依存関係のインストールと管理

requirements.txtpyproject.toml 、およびpackage.jsonで定義されたライブラリは、専用のコンピュートで実行されるコンテナに直接インストールされます。 これらの依存関係の管理とパッチ適用は、あなたの責任です。

依存関係ファイルでは複数のソースからのライブラリを指定できます。

  • PyPIやnpmなどのパブリックリポジトリからダウンロードしたライブラリ
  • Databricks シークレットに保存された資格情報を使用して認証するプライベート リポジトリ
  • /Volumes/ディレクトリに保存されているライブラリ (例: /Volumes/<catalog>/<schema>/<volume>/<path> )

プライベートリポジトリからインストールする

プライベート リポジトリからパッケージをインストールするには、認証用の環境変数を設定します。たとえば、 PIP_INDEX_URLプライベート リポジトリを指すように設定します。

YAML
env:
- name: PIP_INDEX_URL
valueFrom: my-pypi-secret

ワークスペースのネットワーク構成で、プライベート リポジトリへのアクセスを許可する必要があります。「Databricks アプリのネットワークの構成」を参照してください。

Unity Catalogボリュームからホイールファイルをインストールする

Unity Catalogボリュームに保存されている wheel ファイルからPythonパッケージをインストールするには:

  1. Unity Catalogボリュームをリソースとしてアプリに追加します。 Unity Catalogボリュームを参照してください。
  2. requirements.txtでホイール ファイルの完全なパスを直接参照します。
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl
注記

環境変数参照はrequirements.txtではサポートされていません。完全なホイール ファイルのパスをハードコードする必要があります。

外部パッケージ リポジトリにアクセスする際のセキュリティを強化するには、サーバレス出力制御を使用してパブリック リポジトリへのアクセスを制限し、プライベート ネットワークを構成します。 「Databricks アプリのネットワークの構成」を参照してください。