Gérer les dépendances pour une application Databricks
Une application Databricks peut inclure des dépendances Python, des dépendances Node.js ou les deux. Vous déclarez les dépendances dans des fichiers spécifiques au langage que Databricks installe lors du déploiement de l'application :
- Utilisez un
requirements.txtfichier pour les packages **Python** installéspipavec. Consultez Définir les dépendances Python avecpip. - Utilisez un
pyproject.tomlfichier pour les packages **Python** installésuvavec. Consultez Définir les dépendances Python avecuv. - Utilisez un fichier
package.jsonpour les packages Node.js installés avecnpmoupnpm. Consultez Définir les dépendances Node.js.
Définir les dépendances Python avec pip
Les applications qui utilisent pip sont fournies avec un ensemble de bibliothèques Python préinstallées. Pour définir des bibliothèques Python supplémentaires, utilisez un fichier requirements.txt. Si les packages répertoriés correspondent à des packages préinstallés, les versions de votre fichier remplacent les default.
Les applications à mise à l'échelle horizontale (Bêta) converties à partir d'applications standard peuvent choisir de ne pas utiliser les bibliothèques préinstallées et d'exécuter à la place une image de système d'exploitation de base propre. Voir Désactiver les bibliothèques Python préinstallées pour les applications Databricks.
Par exemple :
# 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
Bibliothèques Python préinstallées
pipLes applications basées sur incluent les bibliothèques Python préinstallées suivantes. Vous n'avez pas besoin de les ajouter à votre requirements.txt sauf si vous avez besoin d'une version différente.
Bibliothèque | Version |
|---|---|
connecteur 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 |
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 |
Définir les dépendances Python avec uv
Si votre application utilise uv pour la gestion des dépendances, définissez les dépendances Python dans un fichier pyproject.toml au lieu de requirements.txt. Les applications basées sur uvn'incluent pas de bibliothèques préinstallées, vous devez donc déclarer toutes les dépendances dans votre pyproject.toml. Vous pouvez également spécifier n'importe quelle version de Python à l'aide du champ requires-python, contrairement aux applications basées sur pipqui utilisent Python 3.11.
Il en va de même pour les applications à mise à l'échelle horizontale qui ont choisi de ne pas utiliser les bibliothèques préinstallées. Voir Désactiver les bibliothèques Python préinstallées pour les applications Databricks.
Lors du déploiement, Databricks Apps sélectionne une stratégie d'installation en fonction des fichiers présents :
- Si
requirements.txtexiste, l'application utilisepippour installer les dépendances, quepyproject.tomlsoit également présent ou non.requirements.txta toujours la priorité. - Si
requirements.txtn'existe pas et quepyproject.tomletuv.lockexistent, l'application utiliseuvpour installer les dépendances à partir du fichier de verrouillage.
L'installateur uv crée et gère son propre environnement virtuel, vous n'avez donc pas besoin de créer un répertoire .venv.
L'exemple suivant présente un pyproject.toml minimal pour une application Databricks :
[project]
name = "my-app"
requires-python = ">=3.11"
dependencies = [
"dash==2.10.0",
"requests==2.31.0",
]
Pour utiliser uv, vous devez inclure un fichier uv.lock aux côtés de votre pyproject.toml. Générez-le en exécutant uv lock localement et incluez-le dans le répertoire de votre application.
Définir les dépendances Node.js
Pour définir les bibliothèques Node.js, incluez un fichier package.json à la racine de votre application. Databricks prend en charge à la fois npm et pnpm, et sélectionne le gestionnaire de package en fonction du fichier de verrouillage que vous incluez :
- Si
pnpm-lock.yamlest présent, l'application utilisepnpm. Consultez Utiliserpnpm. - Sinon, l'application utilise
npm. - Si
pnpm-lock.yamletpackage-lock.jsonsont tous deux présents,pnpma la priorité.
Par exemple, un fichier package.json pour une application React utilisant Vite pourrait ressembler à ceci :
{
"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"
}
}
Répertoriez tous les packages requis pour l'étape de génération sous dependencies, pas devDependencies. Si vous définissez NODE_ENV=production dans vos variables d'environnement, le processus de déploiement ignore l'installation de devDependencies.
Utiliser pnpm
Pour créer avec pnpm, incluez un fichier pnpm-lock.yaml à côté de votre package.json. Générez-le en exécutant pnpm install localement et incluez-le dans le répertoire de votre application. Databricks fournit pnpm par le biais de Corepack.
Voici les exigences suivantes pour les applications pnpm :
- Les dépendances s’installent avec
pnpm install --frozen-lockfile, doncpnpm-lock.yamldoit rester synchronisé avecpackage.json. S'ils drift, la compilation échoue au lieu de mettre à jour le fichier de verrouillage. Régénérez le fichier de verrouillage avecpnpm installaprès avoir modifié les dépendances. - Vous devez spécifier la commande de start dans
app.yaml. Contrairement aux applicationsnpm, les applicationspnpmne reviennent pas à un scriptstartdefault. Consultez Configurer l'exécution d'applications Databricks avecapp.yaml.
Pour les projets Workspace pnpm (où un fichier pnpm-workspace.yaml est présent), certaines commandes app.yaml s'exécutent de manière pnpm récursive. Par exemple, une étape de compilation ou de start pourrait exécuter pnpm -r run build. Ces commandes doivent appeler corepack pnpm au lieu de pnpm afin que les commandes imbriquées soient résolues correctement.
Éviter les conflits de version
Suivez ces consignes pour éviter les conflits de version :
- Pour les applications basées sur
pip, la substitution de packages préinstallés peut entraîner des problèmes de compatibilité si votre version spécifiée diffère significativement de celle préinstallée. - Testez toujours votre application pour vérifier que les modifications de version de package n'introduisent pas d'erreurs.
- L'épinglage de versions explicites dans
requirements.txtpermet de maintenir un comportement cohérent de l'application sur tous les déploiements. - Lors de l'utilisation de
uv, incluez un fichieruv.lockpour des installations entièrement reproductibles sur l'ensemble des déploiements.
Installation et gestion des dépendances
Databricks installe les bibliothèques définies dans requirements.txt, pyproject.toml et package.json directement sur le conteneur exécuté sur votre compute dédié. Vous êtes responsable de la gestion et de la mise à jour de ces dépendances.
Vous pouvez spécifier des bibliothèques à partir de plusieurs sources dans vos fichiers de dépendance :
- Libraries downloaded from public repository like PyPI et npm
- Private repository qui s'authentifient à l'aide d'informations d'identification stockées dans des secrets Databricks
- Bibliothèques stockées dans votre répertoire
/Volumes/(par exemple,/Volumes/<catalog>/<schema>/<volume>/<path>)
Installer à partir de repository privés
Pour installer des packages à partir d'un repository privé, configurez des variables d'environnement pour l'authentification. Par exemple, définissez PIP_INDEX_URL pour pointer vers votre repository privé :
env:
- name: PIP_INDEX_URL
valueFrom: my-pypi-secret
Votre configuration réseau du Workspace doit permettre l'accès au repository privé. Consultez Configurer la mise en réseau pour Databricks Apps.
Installez les fichiers wheel à partir des volumes Unity Catalog
Pour installer des packages Python à partir de fichiers wheel stockés dans des volumes Unity Catalog :
- Ajoutez le volume Unity Catalog en tant que ressource à votre application. Consultez le volume Unity Catalog.
- Référencez le chemin d'accès complet du fichier wheel directement dans votre
requirements.txt:
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl
Les références de variables d'environnement ne sont pas prises en charge dans requirements.txt. Vous devez coder en dur le chemin d'accès complet du fichier wheel.
Pour améliorer la sécurité lors de l'accès aux repositories de packages externes, utilisez les contrôles de sortie serverless pour restreindre l'accès aux repositories publics et configurez la mise en réseau privée. Consultez Configurer la mise en réseau pour Databricks Apps.