Aller au contenu principal

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 :

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

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.txt existe, l'application utilise pip pour installer les dépendances, que pyproject.toml soit également présent ou non. requirements.txt a toujours la priorité.
  • Si requirements.txt n'existe pas et que pyproject.toml et uv.lock existent, l'application utilise uv pour 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 :

Toml
[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.yaml est présent, l'application utilise pnpm. Consultez Utiliser pnpm.
  • Sinon, l'application utilise npm.
  • Si pnpm-lock.yaml et package-lock.json sont tous deux présents, pnpm a la priorité.

Par exemple, un fichier package.json pour une application React utilisant Vite pourrait ressembler à ceci :

JSON
{
"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"
}
}
remarque

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, donc pnpm-lock.yaml doit rester synchronisé avec package.json. S'ils drift, la compilation échoue au lieu de mettre à jour le fichier de verrouillage. Régénérez le fichier de verrouillage avec pnpm install après avoir modifié les dépendances.
  • Vous devez spécifier la commande de start dans app.yaml. Contrairement aux applications npm, les applications pnpm ne reviennent pas à un script start default. Consultez Configurer l'exécution d'applications Databricks avec app.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.txt permet de maintenir un comportement cohérent de l'application sur tous les déploiements.
  • Lors de l'utilisation de uv, incluez un fichier uv.lock pour 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é :

YAML
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 :

  1. Ajoutez le volume Unity Catalog en tant que ressource à votre application. Consultez le volume Unity Catalog.
  2. 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
remarque

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.