共用方式為


管理 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) 0.33.0
mlflow-skinny 2.16.2
gradio 4.44.0
streamlit 1.38.0
閃亮 1.1.0
破折號 2.18.1
燒瓶 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(Dash 引導元件) 1.6.0
plotly(數據可視化工具) 5.24.1
plotly-resampler(繪圖圖表再取樣工具) 0.10.0

定義 Python 相依關係 uv

如果你的應用程式使用 uv 相依管理,請在檔案中定義 Python 相依關係 pyproject.toml ,而不是 requirements.txt。 預設的函式庫無法用於 uv基於 的應用程式。 你必須在你的 pyproject.toml 中聲明所有依賴項。 你也可以用欄位 requires-python 指定任何 Python 版本,不同於 pip 基於 Python 3.11 的應用程式。

在部署過程中,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 以安裝其中所列的所有相依性。

例如, package.json 使用 Vite 之 React 應用程式的檔案可能如下所示:

{
  "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下的所有必要dependencies套件,而非devDependencies。 如果您在環境變數中設定 NODE_ENV=production ,部署程式會略過安裝 devDependencies

避免版本衝突

當您定義相依性時,請記住下列事項:

  • 對於基於pip的應用程式,覆寫預載套件時,若你指定的版本與預裝版本差異顯著,可能會造成相容性問題。
  • 請務必測試您的應用程式,以確保套件版本變更不會造成錯誤。
  • 釘選特定版本在requirements.txt 中有助於維持應用程式在跨部署時的一致性行為。
  • 使用 uv 時,請包含 uv.lock 檔案,以便在不同部署中實現完全可重現的安裝。

相依性安裝與管理

定義在 requirements.txtpyproject.tomlpackage.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 Catalog 卷
  2. 直接參考整個方向盤檔案路徑:requirements.txt
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl

備註

環境變數參考在 requirements.txt中不被支援。 你必須硬編碼完整的輪子檔案路徑。

若要在存取外部套件儲存庫時增強安全性,請使用無伺服器輸出控制來限制對公用儲存庫的存取並設定專用網路。 請參閱 設定 Databricks Apps 的網路