Hantera beroenden för en Databricks-app

En Databricks-app kan innehålla Python beroenden, Node.js beroenden eller båda. Du deklarerar beroenden i språkspecifika filer som Azure Databricks installerar när du distribuerar appen:

Definiera Python-beroenden med pip

Appar som använder pip levereras med en uppsättning förinstallerade Python-bibliotek. Om du vill definiera ytterligare Python-bibliotek använder du en requirements.txt fil. Om några paket i listan matchar förinstallerade, åsidosätter versionerna i filen standardvärdena.

Horisontellt skalbara appar (Beta) som konverterats från standardappar kan välja bort förinstallerade bibliotek och köras på en ren bas-OS-avbildning i stället. Se Välj bort förinstallerade Python-bibliotek för Databricks-appar.

Till exempel:

# 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

Förinstallerade Python-bibliotek

pip-baserade appar innehåller följande förinstallerade Python bibliotek. Du behöver inte lägga till dem i din requirements.txt om du inte behöver en annan version.

Bibliotek Utgåva
databricks-sql-connector 3.4.0
Databricks SDK 0.33.0
mlflow-skinny 2.16.2
gradio 4.44.0
streamlit 1.38.0
glänsande 1.1.0
tankstreck 2.18.1
flaska 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-komponenter 0.14.4
dash-bootstrap-components 1.6.0
plotly 5.24.1
plotly-resampler 0.10.0

Definiera Python-beroenden med uv

Om appen använder uv för beroendehantering definierar du Python-beroenden i en pyproject.toml fil i stället för requirements.txt. uv-baserade appar innehåller inte förinstallerade bibliotek, så du måste deklarera alla beroenden i .pyproject.toml Du kan också ange vilken Python version som helst med hjälp av requires-python fältet, till skillnad från pip-baserade appar, som använder Python 3.11.

Detsamma gäller för horisontellt skalbara appar som har valt bort förinstallerade bibliotek. Se Välj bort förinstallerade Python-bibliotek för Databricks-appar.

Under distributionen väljer Databricks Apps en installationsstrategi baserat på vilka filer som finns:

  • Om requirements.txt det finns använder appen pip för att installera beroenden, oavsett om pyproject.toml det också finns. requirements.txt har alltid företräde.
  • Om requirements.txt inte finns och både pyproject.toml och uv.lock finns, använder appen uv för att installera beroenden från låsfilen.

Installationsprogrammet uv skapar och hanterar en egen virtuell miljö, så du behöver inte skapa en .venv katalog.

I följande exempel visas ett minimalt pyproject.toml för en Databricks-app:

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

Om du vill använda uvmåste du inkludera en uv.lock fil tillsammans med din pyproject.toml. Generera den genom att köra uv lock lokalt och inkludera den i appens katalog.

Definiera Node.js beroenden

Om du vill definiera Node.js bibliotek inkluderar du en package.json fil i appens rot. Azure Databricks stöder både npm och pnpmoch och väljer pakethanteraren baserat på låsfilen som du inkluderar:

  • Om pnpm-lock.yaml finns, använder appen pnpm. Se Använd pnpm.
  • Annars använder appen npm.
  • Om både pnpm-lock.yaml och package-lock.json finns, pnpm har företräde.

En fil för en React-app som använder Vite kan till exempel package.json se ut så här:

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

Anmärkning

Visa en lista över alla paket som krävs för byggsteget under dependencies, inte devDependencies. Om du anger NODE_ENV=production i miljövariablerna hoppar distributionsprocessen över installationen devDependencies.

Använda pnpm

För att bygga med pnpm, inkludera en pnpm-lock.yaml-fil tillsammans med din package.json. Generera den genom att köra pnpm install lokalt och inkludera den i appens katalog. Azure Databricks tillhandahåller pnpm via Corepack.

Observera följande krav för pnpm appar:

  • Beroenden installeras med pnpm install --frozen-lockfile, så pnpm-lock.yaml måste vara synkroniserade med package.json. Om de avviker misslyckas bygget i stället för att uppdatera låsfilen. Återskapa låsfilen med pnpm install när du har ändrat beroenden.
  • Du måste ange startkommandot i app.yaml. Till skillnad från npm-appar faller pnpm-appar inte tillbaka på ett standardskript start. Se Konfigurera Databricks-appens körning med app.yaml.

För pnpm-arbetsyteprojekt (där det finns en pnpm-workspace.yaml-fil) kör vissa app.yaml-kommandon pnpm rekursivt. Ett bygg- eller startsteg kan till exempel köra pnpm -r run build. Dessa kommandon måste anropa corepack pnpm i stället för pnpm så att de kapslade kommandona löses upp korrekt.

Undvik versionskonflikter

Följ dessa riktlinjer för att undvika versionskonflikter:

  • För pip-baserade appar kan åsidosätta förinstallerade paket orsaka kompatibilitetsproblem om den angivna versionen skiljer sig avsevärt från den förinstallerade.
  • Testa alltid din app för att kontrollera att paketversionsändringar inte medför fel.
  • Genom att fästa explicita versioner i requirements.txt kan du upprätthålla konsekvent appbeteende mellan distributioner.
  • När du använder uv, inkludera en uv.lock-fil för fullt reproducerbara installationer vid utplaceringar.

Installation och hantering av beroenden

Azure Databricks installerar bibliotek som definierats i requirements.txt, pyproject.tomloch package.json direkt på containern som körs på din dedikerade beräkning. Du ansvarar för att hantera och korrigera dessa beroenden.

Du kan ange bibliotek från flera källor i beroendefilerna:

  • Bibliotek som laddats ned från offentliga lagringsplatser som PyPI och npm
  • Privata lagringsplatser som autentiserar med autentiseringsuppgifter som lagras i Azure Databricks-hemligheter
  • Bibliotek som lagras i din /Volumes/ katalog (till exempel /Volumes/<catalog>/<schema>/<volume>/<path>)

Installera från privata lagringsplatser

Om du vill installera paket från en privat lagringsplats konfigurerar du miljövariabler för autentisering. Ange PIP_INDEX_URL till exempel att peka på din privata lagringsplats:

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

Nätverkskonfigurationen för arbetsytan måste tillåta åtkomst till den privata lagringsplatsen. Se Konfigurera nätverk för Databricks-appar.

Installera hjulfiler från Unity Catalog-volymer

Så här installerar du Python-paket från hjulfiler som lagras i Unity Catalog-volymer:

  1. Lägg till Unity Catalog-volymen som en resurs i din app. Se Unity Catalog volym.
  2. Referera till den fullständiga filsökvägen direkt i :requirements.txt
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl

Anmärkning

Miljövariabelreferenser stöds inte i requirements.txt. Du måste hårdkoda den fullständiga sökvägen till wheel-filen.

För att förbättra säkerheten vid åtkomst till externa paketlagringsplatser använder du serverlösa utgående kontroller för att begränsa åtkomsten till offentliga lagringsplatser och konfigurera privata nätverk. Se Konfigurera nätverk för Databricks-appar.