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.
Utilisez les repository de package default au niveau du Workspace
Bêta
Cette fonctionnalité est en bêta. Pour l'utiliser, un administrateur de workspace doit activer Activer la configuration du référentiel du workspace pour Databricks Apps à partir de la page Aperçus . Consultez Gérer les aperçus Databricks.
Si un administrateur de Workspace configure des repositories de packages default pour le Workspace, les applications de ce Workspace installent les packages Python et Node.js depuis les repositories configurés pour le Workspace au lieu des registres PyPI et npm publics. Cela permet aux développeurs d'applications d'hériter automatiquement des paramètres de repository de packages d'entreprise sans dupliquer la configuration dans chaque application, tout en permettant des surcharges par application.
Pour configurer ces paramètres au niveau du Workspace, consultez Configurer les repository de packages default.
Packages Python
Pendant la phase d'installation du package de la compilation, Databricks Apps hérite des paramètres du Workspace pour les variables d'environnement suivantes :
PIP_INDEX_URLPIP_EXTRA_INDEX_URLPIP_CERTUV_INDEX_URLUV_EXTRA_INDEX_URLSSL_CERT_FILE
La configuration spécifique à l'application prend le pas sur les paramètres default du Workspace. Si vous définissez l'une des variables d'environnement précédentes (à l'exception des paramètres de certificat mentionnés ci-dessous) dans le fichier app.yaml de votre application, les valeurs de app.yaml remplacent les paramètres du workspace pour cette application.
Les paramètres de certificat PIP_CERT et SSL_CERT_FILE utilisent toujours les valeurs configurées dans le workspace et ne peuvent pas être remplacés dans app.yaml.
Testez vos applications après que l'administrateur du workspace ait activé la préversion, et définissez PIP_INDEX_URL dans app.yaml si vous devez continuer à installer depuis un index différent.
packages Node.js
Lorsqu'un administrateur de Workspace configure un registre npm default, Databricks Apps écrit la configuration du registre du Workspace dans le fichier .npmrc de l'application pendant le déploiement. Cela permet aux applications d'installer des packages Node.js, y compris des packages privés, à partir du registre configuré dans le Workspace sans que chaque application ne stocke sa propre URL de registre ou son jeton d'authentification.
Pour utiliser un autre registre pour une application spécifique, définissez la variable d'environnement NPMRC dans le fichier app.yaml de votre application pour référencer votre propre configuration npm. La configuration spécifique à l'application l'emporte sur les valeurs par default du Workspace.
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.