Delen via


Afhankelijkheden voor een Databricks-app beheren

Elke Databricks-app kan afhankelijkheden voor Python, Node.jsof beide bevatten. U definieert deze afhankelijkheden in taalspecifieke bestanden:

Python-afhankelijkheden definiëren met pip

Apps die pip gebruiken, worden geleverd met een set vooraf geïnstalleerde Python-bibliotheken. Als u aanvullende Python-bibliotheken wilt definiëren, gebruikt u een requirements.txt bestand. Als alle vermelde pakketten overeenkomen met vooraf geïnstalleerde pakketten, overschrijven de versies in uw bestand de standaardwaarden.

Voorbeeld:

# 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

Vooraf geïnstalleerde Python-bibliotheken

De volgende Python-bibliotheken zijn vooraf geïnstalleerd voor oppip-gebaseerde apps. U hoeft ze alleen in uw requirements.txt op te nemen als u een andere versie nodig hebt.

Bibliotheek Versie
databricks-sql-connector 3.4.0
databricks-sdk 0.33.0
mlflow-skinny 2.16.2
gradio 4.44.0
streamlit 1.38.0
glanzend en nieuw 1.1.0
scheutje 2.18.1
veldfles 3.0.3
fastapi 0.115.0
uvicorn[standaard] 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

Python-afhankelijkheden definiëren met uv

Als uw app uv gebruikt voor afhankelijkheidsbeheer, definieer dan Python-afhankelijkheden in een pyproject.toml bestand in plaats van requirements.txt. Vooraf geïnstalleerde bibliotheken zijn niet beschikbaar voor uv-gebaseerde apps. U moet alle afhankelijkheden in uw pyproject.toml. U kunt ook elke Python-versie opgeven met behulp van het requires-python veld, in tegenstelling tot pipop -gebaseerde apps die gebruikmaken van Python 3.11.

Tijdens de implementatie selecteert Databricks Apps een installatiestrategie op basis van welke bestanden aanwezig zijn:

  • Als requirements.txt bestaat, gebruikt de app pip om afhankelijkheden te installeren, ongeacht of pyproject.toml ook aanwezig is. requirements.txt heeft altijd voorrang.
  • Als requirements.txt niet bestaat en zowel pyproject.toml als uv.lock bestaan, gebruikt de app uv om afhankelijkheden van het vergrendelingsbestand te installeren.

Het uv installatieprogramma maakt en beheert een eigen virtuele omgeving, dus hoeft u geen map .venv te maken.

In het volgende voorbeeld ziet u een minimum pyproject.toml voor een Databricks-app:

[project]
name = "my-app"
requires-python = ">=3.11"
dependencies = [
    "dash==2.10.0",
    "requests==2.31.0",
]

Om uv te gebruiken, moet u een uv.lock-bestand naast uw pyproject.toml opnemen. Genereer het door uv lock lokaal uit te voeren en op te nemen in uw app-directory.

Afhankelijkheden van Node.js definiëren

Als u Node.js bibliotheken wilt definiëren, neemt u een package.json bestand op in de hoofdmap van uw app. Tijdens de implementatie detecteert Azure Databricks dit bestand en voert npm install uit om alle daarin vermelde afhankelijkheden te installeren.

Een bestand voor een React-app met behulp van Vite kan er bijvoorbeeld package.json als volgt uitzien:

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

Opmerking

Vermeld alle pakketten die vereist zijn voor npm run build onder dependencies, niet devDependencies. Als u in uw omgevingsvariabelen instelt NODE_ENV=production , slaat het implementatieproces de installatie devDependenciesover.

Versieconflicten voorkomen

Houd rekening met het volgende wanneer u afhankelijkheden definieert:

  • Voor pipop -gebaseerde apps kan het overschrijven van vooraf geïnstalleerde pakketten compatibiliteitsproblemen veroorzaken als uw opgegeven versie aanzienlijk verschilt van de vooraf geïnstalleerde versie.
  • Test uw app altijd om ervoor te zorgen dat wijzigingen in pakketversies geen fouten veroorzaken.
  • Het vastmaken van expliciete versies in requirements.txt helpt consistent app-gedrag in implementaties te behouden.
  • Bij het gebruik van uv neem je een uv.lock bestand op voor volledig reproduceerbare installaties bij implementaties.

Afhankelijkheden installeren en beheren

Bibliotheken die zijn gedefinieerd in requirements.txt, pyproject.tomlen package.json worden rechtstreeks geïnstalleerd in de container die wordt uitgevoerd op uw toegewezen rekenproces. U bent verantwoordelijk voor het beheren en patchen van deze afhankelijkheden.

U kunt bibliotheken van meerdere bronnen opgeven in uw afhankelijkheidsbestanden:

  • Bibliotheken die zijn gedownload uit openbare opslagplaatsen, zoals PyPI en npm
  • Privéopslagplaatsen die worden geverifieerd met behulp van referenties die zijn opgeslagen in Azure Databricks-geheimen
  • Bibliotheken die zijn opgeslagen in uw /Volumes/ map (bijvoorbeeld /Volumes/<catalog>/<schema>/<volume>/<path>)

Installeren vanuit privéopslagplaatsen

Als u pakketten wilt installeren vanuit een privéopslagplaats, configureert u omgevingsvariabelen voor verificatie. Stel bijvoorbeeld PIP_INDEX_URL in dat deze verwijst naar uw privéopslagplaats:

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

De netwerkconfiguratie van uw werkruimte moet toegang tot de privéopslagplaats toestaan. Zie Netwerken configureren voor Databricks-apps.

Wielbestanden van Unity Catalog-volumes installeren

Python-pakketten installeren vanaf wheel-bestanden die zijn opgeslagen in Unity Catalog-volumes:

  1. Voeg het Unity Catalog-volume toe als een resource aan uw app. Zie Unity Catalog-volume.
  2. Verwijs rechtstreeks naar het volledige bestandspad van de wheel file in uw requirements.txt:
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl

Opmerking

Verwijzingen naar omgevingsvariabelen worden niet ondersteund in requirements.txt. U moet het pad naar het volledige wielbestand hardcoderen.

Om de beveiliging te verbeteren bij het openen van externe pakketrepositories, gebruik egress-beheersmaatregelen zonder server om de toegang tot openbare repositories te beperken en configureer privénetwerken. Zie Netwerken configureren voor Databricks-apps.