Hantera beroenden för en Databricks-app

Varje Databricks-app kan innehålla beroenden för Python, Node.jseller båda. Du definierar dessa beroenden i språkspecifika filer:

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.

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

Följande Python-bibliotek är förinstallerade för pip-baserade appar. Du behöver inte inkludera 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. Förinstallerade bibliotek är inte tillgängliga för uv-baserade appar. Du måste deklarera alla beroenden i pyproject.toml. Du kan också ange vilken Python-version som helst med hjälp requires-python av fältet, till skillnad från pip-baserade appar som använder Python 3.11.

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. Under distributionen identifierar Azure Databricks den här filen och kör npm install för att installera alla beroenden som anges i den.

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 npm run build under dependencies, inte devDependencies. Om du anger NODE_ENV=production i miljövariablerna hoppar distributionsprocessen över installationen devDependencies.

Undvik versionskonflikter

Tänk på följande när du definierar beroenden:

  • 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 se till 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

Bibliotek som definieras i requirements.txt, pyproject.tomloch package.json installeras 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 filsökvägen för hela hjulet.

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.