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 propres au langage qu’Azure Databricks installe lorsque vous déployez l’application :

Définir des 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 requirements.txt fichier. Si des packages répertoriés correspondent à ceux préinstallés, les versions de votre fichier remplacent les valeurs par défaut.

Les applications mises à l’échelle horizontalement (bêta) converties à partir d’applications standard peuvent refuser les bibliothèques préinstallées et s’exécuter sur une image de système d’exploitation de base propre à la place. Consultez 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

Les applications basées sur pip 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 autre version.

Bibliothèque Version
databricks-sql-connector 3.4.0
Kit de développement logiciel Databricks (SDK) 0.33.0
mlflow-skinny 2.16.2
gradio 4.44.0
streamlit 1.38.0
brillant 1.1.0
tiret 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 des dépendances Python avec uv

Si votre application utilise uv pour la gestion des dépendances, définissez les dépendances Python dans un pyproject.toml fichier au lieu de requirements.txt. Les applications basées sur uv n’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 pip, qui utilisent Python 3.11.

La même chose s’applique aux applications mises à l’échelle horizontalement qui ont choisi de ne pas disposer de bibliothèques préinstallées. Consultez Désactiver les bibliothèques Python préinstallées pour les applications Databricks.

Pendant le déploiement, Databricks Apps sélectionne une stratégie d’installation basée sur les fichiers présents :

  • Si requirements.txt existe, l’application utilise pip pour installer des dépendances, peu importe si pyproject.toml est également présente. requirements.txt est toujours prioritaire.
  • S’il requirements.txt n’existe pas et que pyproject.toml et uv.lock existent, l’application utilise uv pour installer des dépendances à partir du fichier de verrou.

Le uv programme d’installation crée et gère son propre environnement virtuel. Vous n’avez donc pas besoin de créer un .venv répertoire.

L’exemple suivant montre un minimum pyproject.toml 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 uv.lock fichier en même temps que votre pyproject.toml. Générez-le en exécutant uv lock localement et incluez-le dans votre répertoire d’application.

Définir des dépendances Node.js

Pour définir les bibliothèques Node.js, incluez un fichier package.json à la racine de votre application. Azure Databricks prend en charge npm et pnpm, et sélectionne le gestionnaire de paquets en fonction du fichier de verrouillage que vous incluez :

  • Si pnpm-lock.yaml est présent, l’application utilise pnpm. Voir Utiliser pnpm.
  • Sinon, l’application utilise npm.
  • Si pnpm-lock.yaml et package-lock.json sont tous deux présents, pnpm a priorité.

Par exemple, un package.json fichier pour une application React à l’aide de Vite peut 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"
  }
}

Remarque

Répertorier tous les packages requis pour l’étape de génération sous dependencies, et non devDependencies. Si vous définissez NODE_ENV=production dans vos variables d’environnement, le processus de déploiement ignore l’installation devDependencies.

Utiliser pnpm

Pour compiler 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 votre répertoire d’application. Azure Databricks fournit pnpm via Corepack.

Notez les conditions requises suivantes pour pnpm les applications :

  • Les dépendances sont installées avec pnpm install --frozen-lockfile, donc pnpm-lock.yaml doivent rester synchronisées avec package.json. S’ils dérivent, 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 démarrage dans app.yaml. Contrairement aux applications npm, les applications pnpm n’utilisent pas le script start par défaut. Consultez Configurer l’exécution de l’application Databricks avec app.yaml.

Pour les projets pnpm de l’espace de travail (lorsqu’un fichier pnpm-workspace.yaml est présent), certaines commandes app.yaml s’exécutent pnpm récursivement. Par exemple, une étape de génération ou de démarrage peut exécuter pnpm -r run build. Ces commandes doivent appeler corepack pnpm au lieu de pnpm, afin que les commandes imbriquées soient correctement résolues.

Éviter les conflits de version

Suivez ces instructions pour éviter les conflits de version :

  • Pour les applications basées sur pip, le remplacement de packages préinstallés peut entraîner des problèmes de compatibilité si votre version spécifiée diffère considérablement de la version préinstallée.
  • Testez toujours votre application pour vérifier que les modifications de version du package n’introduisent pas d’erreurs.
  • L’épinglage de versions explicites dans requirements.txt permet de maintenir un comportement d’application cohérent entre les déploiements.
  • Lorsque vous utilisez uv, incluez un uv.lock fichier pour les installations entièrement reproductibles entre les déploiements.

Installation et gestion des dépendances

Azure Databricks installe des bibliothèques définies dans requirements.txt, pyproject.tomlet package.json directement sur le conteneur s’exécutant sur votre calcul dédié. Vous êtes responsable de la gestion et de l'application de correctifs à ces dépendances.

Vous pouvez spécifier des bibliothèques à partir de plusieurs sources dans vos fichiers de dépendance :

  • Bibliothèques téléchargées à partir de référentiels publics tels que PyPI et npm
  • Référentiels privés qui s’authentifient à l’aide d’identifiants stockés dans les secrets Azure Databricks
  • Bibliothèques stockées dans votre /Volumes/ répertoire (par exemple, /Volumes/<catalog>/<schema>/<volume>/<path>)

Installer à partir de référentiels privés

Pour installer des packages à partir d’un référentiel privé, configurez les variables d’environnement pour l’authentification. Par exemple, définissez ce paramètre PIP_INDEX_URL pour qu’il pointe vers votre dépôt privé :

env:
  - name: PIP_INDEX_URL
    valueFrom: my-pypi-secret

La configuration du réseau de votre espace de travail doit autoriser l’accès au référentiel privé. Consultez Configurer la mise en réseau pour Databricks Apps.

Utiliser les référentiels de package par défaut au niveau de l’espace de travail

Important

Cette fonctionnalité est en version bêta. Pour l’utiliser, un administrateur de l’espace de travail doit activer Configuration des dépôts du workspace pour Databricks Apps depuis la page Aperçus. Consultez Gérer les préversions d’Azure Databricks.

Si un administrateur d’espace de travail configure les référentiels de package par défaut pour l’espace de travail, les applications de cet espace de travail installent Python et Node.js des packages à partir des référentiels configurés par l’espace de travail au lieu des registres PyPI et npm publics. Cela permet aux développeurs d’applications d’hériter automatiquement des paramètres de référentiel de package d’entreprise sans dupliquer la configuration dans chaque application, tout en autorisant les remplacements par application.

Pour configurer ces paramètres au niveau de l’espace de travail, consultez Configurer les référentiels de package par défaut.

paquets Python

Pendant la phase d’installation du package de la build, Databricks Apps hérite des paramètres de l’espace de travail 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 est prioritaire sur les valeurs par défaut de l’espace de travail. Si vous définissez l’une des variables d’environnement précédentes (à l’exception des paramètres de certificat indiqués ci-dessous) dans le fichier app.yaml de votre application, les valeurs de app.yaml remplacent les paramètres de l’espace de travail pour cette application.

Remarque

Les paramètres de certificat PIP_CERT et SSL_CERT_FILE utilisent toujours les valeurs configurées pour l’espace de travail et ne peuvent pas être remplacés dans app.yaml.

Warning

Testez vos applications une fois que l’administrateur de l’espace de travail a activé la préversion, et définissez PIP_INDEX_URL dans app.yaml si vous devez continuer à installer depuis un autre index.

packagesNode.js

Lorsqu’un administrateur d’espace de travail configure un registre npm par défaut, Databricks Apps écrit la configuration du registre de l’espace de travail dans le fichier de l’application .npmrc pendant le déploiement. Cela permet aux applications d’installer des packages Node.js, y compris des packages privés, à partir du registre configuré par l’espace de travail sans chaque application stockant son propre URL de Registre ou son jeton d’authentification.

Pour utiliser un registre différent pour une application spécifique, définissez la variable d’environnement dans le NPMRC fichier de app.yaml votre application pour référencer votre propre configuration npm. La configuration spécifique à l’application est prioritaire sur les paramètres par défaut de l’espace de travail.

Installer des fichiers wheel depuis des volumes Unity Catalog

Pour installer des packages Python à partir de fichiers wheel stockés dans des volumes de catalogue Unity :

  1. Ajoutez le volume du catalogue Unity en tant que ressource à votre application. Consultez le volume du catalogue Unity.
  2. Référencez directement le chemin d’accès complet du fichier wheel dans votre fichier 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 référentiels de packages externes, utilisez des contrôles de sortie serverless pour restreindre l’accès aux référentiels publics et configurer la mise en réseau privée. Consultez Configurer la mise en réseau pour Databricks Apps.