每個 Databricks 應用程式都可以包含 Python、Node.js或兩者的相依性。 您可以在語言特定檔案中定義這些相依性:
- 使用
requirements.txt檔案來指定使用pip安裝的 Python 套件。 參見定義帶有pip的 Python 相依關係。 - 使用
pyproject.toml檔案指定使用uv安裝的Python套件。 參見定義帶有uv的 Python 相依關係。 - 使用
package.json文件來指定 Node.js 套件。 參見 定義 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.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 Catalog 卷。
- 直接參考整個方向盤檔案路徑:
requirements.txt
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl
備註
環境變數參考在 requirements.txt中不被支援。 你必須硬編碼完整的輪子檔案路徑。
若要在存取外部套件儲存庫時增強安全性,請使用無伺服器輸出控制來限制對公用儲存庫的存取並設定專用網路。 請參閱 設定 Databricks Apps 的網路。