Partage via


Gérer les dépendances pour une application Databricks

Chaque application Databricks peut inclure des dépendances pour Python, Node.jsou les deux. Vous définissez ces dépendances dans des fichiers spécifiques au langage :

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.

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 bibliothèques Python suivantes sont préinstallées pour des applications basées sur pip. Vous n’avez pas besoin de les inclure dans 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 (version légère de mlflow) 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 bibliothèques préinstallées ne sont pas disponibles pour les applications basées sur uv. Vous devez déclarer toutes les dépendances dans votre pyproject.toml. Vous pouvez également spécifier n’importe quelle version de Python à l’aide du requires-python champ, contrairement aux pipapplications basées sur Python 3.11.

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. Pendant le déploiement, Azure Databricks détecte ce fichier et s’exécute npm install pour installer toutes les dépendances répertoriées dans celle-ci.

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 npm run build 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.

Éviter les conflits de version

Gardez à l’esprit ce qui suit lorsque vous définissez des dépendances :

  • 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 vous assurer 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

Les bibliothèques définies dans requirements.txt, pyproject.tomlet package.json sont installées 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.

Installer des fichiers wheel à partir de volumes de catalogue Unity

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 le chemin d’accès complet du fichier de roue 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 encoder en dur le chemin du fichier de roue complète.

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.