Databricks アプリでのプリインストール済み Python ライブラリの無効化
このページでは、水平方向にスケーリングされたDatabricksアプリで、プリインストールされているPythonライブラリをオプトアウトし、独自の依存関係を管理し、後でプリインストールされているライブラリを再度有効にする方法について説明します。オプトアウトは、標準アプリから変換された水平スケーリングされたアプリでのみ利用可能です。標準アプリを水平スケーリングを使用するように変換するを参照してください。水平スケーリングはベータ版です。
標準アプリを水平スケーリングに変換すると、Databricks は、変換されたアプリをプリインストールされた Python ライブラリにピン留めするため、アプリの既存のインポートが引き続き機能します。クリーンなベース OS イメージでアプリを実行し、各ライブラリを自分で宣言するには、オプトアウトしてください。
プリインストール済みライブラリのオプトアウト
オプトアウトすると、Databricks はクリーンなベース OS イメージに基づいて次回のデプロイを構築します。事前インストール済みのライブラリは、requirements.txtまたはpyproject.tomlで宣言しない限り利用できません。
オプトアウトするには:
- アプリの詳細ページで、 編集 をクリックします。
- 構成 ステップで、 事前にインストールされているPythonライブラリを使用 チェックボックスをオフにします。
- 保存 をクリックします。現在実行中のデプロイメントは影響を受けません。
- Deployments タブからアプリを再度デプロイします。この新しいデプロイメントはクリーンなベースOSイメージを基に構築されます。
推奨されるワークフロー
依存関係には、事前インストールされたライブラリが推移的に含まれる場合があります。そのため、アプリがどのライブラリを直接必要とするのかが常に明確であるとは限りません。本番運用でオプトアウトする前に、テストアプリで欠落しているライブラリを見つける:
- 新しい水平スケーリングされたアプリを作成します。新しく水平スケーリングされたアプリはすでにクリーンなベースOSイメージ上で実行されています。そのため、これはオプトアウト後のターゲットと一致します。
- 本番運用アプリのソースをテストアプリにデプロイします。
requirements.txt(またはpyproject.toml)を更新し、テストアプリが起動し、リクエストを処理し、テストに合格するまで再デプロイしてください。 - 最終的な依存関係宣言を本番運用アプリのソースにコピーしてください。
- 本番運用アプリでは、プリインストールされているライブラリの無効化のステップに従って、更新されたソースをデプロイしてください。
新しいデプロイが正常性チェックに合格するまで、本番運用はプリインストールされたライブラリを含むイメージで実行され続けます。そのため、このアプローチにより、テストアプリで不足している依存関係を特定する間、ダウンタイムを回避できます。
オプトアウトした後にエラーを解決する
オプトアウト後の最も一般的な障害は、アプリ起動時に発生するModuleNotFoundErrorです。これは、お使いのコードがプリインストールされたセットから暗黙的にインポートしたフレームワークまたはライブラリによって引き起こされます。解決するには:
- アプリの詳細ページで、**ログ**タブを開きます。
- ビルドログまたはランタイムログで、不足しているモジュール名を確認してください。
- 対応するパッケージを
requirements.txt(またはpyproject.toml) に追加し、再デプロイしてください。
新しいデプロイメントは、アプリのプロセスが起動後数秒間稼働し続けた場合にのみ、実行中のデプロイメントと置き換えられます。インポートの欠落によってすぐにクラッシュするオプトアウトデプロイは引き継がれることはなく、依存関係リストを修正している間は、トラフィックは以前に正常に動作していたデプロイで継続されます。起動時のチェックは簡易的なため、破損したデプロイを検出するチェックに依存するのではなく、オプトアウト後にアプリが実際にリクエストを処理することを確認してください。
プリインストールされたライブラリを再度有効にする
オプトアウト後に事前インストール済みのライブラリに戻るには:
- アプリの詳細ページで、 編集 をクリックします。
- **設定**ステップで、**事前インストールされているPythonライブラリを使用**チェックボックスを選択します。
- 保存 をクリックします。
- Deployments タブからアプリを再度デプロイします。この新しいデプロイメントは、事前インストール済みのライブラリを含むベースイメージに基づいて構築されます。
requirements.txtとpyproject.tomlは引き続き適用されます。そのため、オプトアウト中に明示的に追加した宣言は維持されます。
水平スケーリングされたアプリを標準アプリに戻すと、プリインストールされているライブラリも復元され、オプトアウトしていたかどうかにかかわらず、それらを使用して標準アプリが再構築されます。アプリを再度水平スケーリングに変換した場合、再度オプトアウトするまでプリインストールされたライブラリが含まれます。