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.

Utilisez les repository de package default au niveau du Workspace

info

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_URL
  • PIP_EXTRA_INDEX_URL
  • PIP_CERT
  • UV_INDEX_URL
  • UV_EXTRA_INDEX_URL
  • SSL_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.

remarque

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.

attention

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 :

  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.