次の方法で共有


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 ライブラリ

次の Python ライブラリは、 pip ベースのアプリ用にプレインストールされています。 別のバージョンが必要な場合を除き、 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 Apps は、存在するファイルに基づいてインストール戦略を選択します。

  • requirements.txt存在する場合、pipも存在するかどうかに関係なく、アプリはpyproject.tomlを使用して依存関係をインストールします。 requirements.txt 常に優先されます。
  • requirements.txtが存在せず、pyproject.tomluv.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 install 実行して、一覧に表示されているすべての依存関係をインストールします。

たとえば、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"
  }
}

npm run buildではなく、dependenciesdevDependenciesに必要なすべてのパッケージを一覧表示します。 環境変数で NODE_ENV=production を設定した場合、デプロイ プロセスでは devDependenciesのインストールはスキップされます。

バージョンの競合を回避する

依存関係を定義するときは、次の点に注意してください。

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

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

requirements.txtpyproject.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 パッケージをインストールするには:

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

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

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