Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Databricks-App kann Python Abhängigkeiten, Node.js Abhängigkeiten oder beides enthalten. Sie deklarieren Abhängigkeiten in sprachspezifischen Dateien, die Azure Databricks beim Bereitstellen der App installiert:
- Verwenden Sie eine
requirements.txt-Datei für Python-Pakete, die mitpipinstalliert wurden. Siehe Definieren von Python-Abhängigkeiten mitpip. - Verwenden Sie eine
pyproject.toml-Datei für Python-Pakete, die mituvinstalliert wurden. Siehe Definieren von Python-Abhängigkeiten mituv. - Verwenden Sie eine Datei
package.jsonfür Node.js-Pakete, die mitnpmoderpnpminstalliert wurden. Siehe Definieren Node.js Abhängigkeiten.
Definieren von Python-Abhängigkeiten mit pip
Apps, die pip verwenden, enthalten eine Reihe vorinstallierter Python-Bibliotheken. Verwenden Sie eine requirements.txt Datei, um zusätzliche Python-Bibliotheken zu definieren. Wenn aufgelistete Pakete mit vorinstallierten Paketen übereinstimmen, setzen die Versionen in Ihrer Datei die Standardwerte außer Kraft.
Horizontal skalierte Apps (Beta), die aus Standard-Apps konvertiert wurden, können auf vorinstallierte Bibliotheken verzichten und stattdessen auf einem sauberen Basis-OS-Image ausgeführt werden. Siehe Abwahl vorinstallierter Python-Bibliotheken für Databricks-Apps.
Beispiel:
# 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
Vorinstallierte Python-Bibliotheken
pip-basierte Apps enthalten die folgenden vorinstallierten Python-Bibliotheken. Sie müssen sie Ihrem requirements.txt nicht hinzufügen, es sei denn, Sie benötigen eine andere Version.
| Bibliothek | Version |
|---|---|
| Databricks-SQL-Konnektor | 3.4.0 |
| Databricks-SDK | 0.33.0 |
| mlflow-skinny | 2.16.2 |
| Gradio | 4.44.0 |
| Streamlit | 1.38.0 |
| glänzend | 1.1.0 |
| Gedankenstrich | 2.18.1 |
| flask | 3.0.3 |
| fastapi | 0.115.0 |
| uvicorn[Norm] | 0.30.6 |
| gunicorn | 23.0.0 |
| huggingface-hub | 0.35.3 |
| dash-ag-grid | 31.2.0 |
| Gedankenstrich-Mantine-Komponenten | 0.14.4 |
| Gedankenstrich-Bootstrap-Komponenten | 1.6.0 |
| plotly | 5.24.1 |
| plotly-Resampler | 0.10.0 |
Definieren von Python-Abhängigkeiten mit uv
Wenn Ihre App uv für die Abhängigkeitsverwaltung verwendet, definieren Sie Python-Abhängigkeiten in einer pyproject.toml-Datei anstelle von requirements.txt.
uv-basierte Apps enthalten keine vorinstallierten Bibliotheken, daher müssen Sie alle Abhängigkeiten in Ihrer pyproject.tomlDeklaration deklarieren. Sie können auch jede Python Version mithilfe des requires-python Felds angeben, im Gegensatz zu pip-basierten Apps, die Python 3.11 verwenden.
Das gleiche gilt für horizontal skalierte Apps, die sich von vorinstallierten Bibliotheken abgemeldet haben. Siehe Abwahl vorinstallierter Python-Bibliotheken für Databricks-Apps.
Während der Bereitstellung wählt Databricks Apps eine Installationsstrategie aus, die darauf basiert, welche Dateien vorhanden sind:
- Falls
requirements.txtexistiert, verwendet die Apppipzur Installation von Abhängigkeiten, unabhängig davon, obpyproject.tomlauch vorhanden ist.requirements.txthat immer Vorrang. - Wenn
requirements.txtnicht vorhanden ist und sowohlpyproject.tomlals auchuv.lockvorhanden sind, verwendet die Appuvzum Installieren von Abhängigkeiten aus der Sperrdatei.
Das uv Installationsprogramm erstellt und verwaltet seine eigene virtuelle Umgebung, sodass Sie kein Verzeichnis erstellen .venv müssen.
Das folgende Beispiel zeigt ein Minimum pyproject.toml für eine Databricks-App:
[project]
name = "my-app"
requires-python = ">=3.11"
dependencies = [
"dash==2.10.0",
"requests==2.31.0",
]
Um uv zu verwenden, müssen Sie eine uv.lock-Datei neben Ihrem pyproject.toml einschließen. Generieren Sie die Datei, indem Sie uv lock lokal ausführen und sie anschließend in Ihr App-Verzeichnis aufnehmen.
Definieren von Node.js-Abhängigkeiten
Um Node.js Bibliotheken zu definieren, fügen Sie eine package.json Datei in den Stamm ihrer App ein. Azure Databricks unterstützt sowohl npm als auch pnpm und wählt den Paketmanager basierend auf der von Ihnen eingebundenen Lockdatei aus:
- Wenn
pnpm-lock.yamlvorhanden ist, verwendet die Apppnpm. Siehe Verwendenpnpm. - Andernfalls verwendet die App
npm. - Wenn sowohl
pnpm-lock.yamlals auchpackage-lock.jsonvorhanden sind, hatpnpmVorrang.
Beispielsweise könnte eine package.json Datei für eine React-App mit Vite wie folgt aussehen:
{
"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"
}
}
Hinweis
Führen Sie alle Pakete auf, die für den Buildschritt unter dependencies erforderlich sind, nicht unter devDependencies. Wenn Sie in Ihren Umgebungsvariablen festlegen NODE_ENV=production , überspringt der Bereitstellungsprozess die Installation devDependencies.
Verwenden Sie pnpm
Zum Erstellen mit pnpm fügen Sie neben Ihrer pnpm-lock.yaml eine package.json-Datei ein. Generieren Sie die Datei, indem Sie pnpm install lokal ausführen und sie anschließend in Ihr App-Verzeichnis aufnehmen. Azure Databricks wird über pnpm bereitgestellt.
Beachten Sie die folgenden Anforderungen für pnpm Apps:
- Abhängigkeiten werden mit
pnpm install --frozen-lockfileinstalliert, daher musspnpm-lock.yamlmitpackage.jsonsynchronisiert bleiben. Wenn sie driften, schlägt der Build fehl, anstatt die Sperrdatei zu aktualisieren. Erstellen Sie die Sperrdatei mitpnpm installneu, nachdem Sie die Abhängigkeiten geändert haben. - Sie müssen den Startbefehl in
app.yamlangeben. Im Gegensatz zunpmApps fallenpnpmApps nicht auf ein Standardskriptstartzurück. Siehe Konfigurieren der Databricks-App-Ausführung mitapp.yaml.
Bei pnpm-Arbeitsbereichsprojekten (bei denen eine pnpm-workspace.yaml-Datei vorhanden ist) werden einige app.yaml-Befehle pnpm rekursiv ausgeführt. Beispielsweise könnte ein Build- oder Startschritt pnpm -r run build ausführen. Diese Befehle müssen corepack pnpm anstelle von pnpm aufrufen, sodass die geschachtelten Befehle ordnungsgemäß aufgelöst werden.
Vermeiden von Versionskonflikten
Befolgen Sie die folgenden Richtlinien, um Versionskonflikte zu vermeiden:
- Bei
pip-basierten Apps kann das Überschreiben vorinstallierter Pakete Kompatibilitätsprobleme verursachen, wenn sich Ihre angegebene Version erheblich von der vorinstallierten Version unterscheidet. - Testen Sie Ihre App immer, um zu überprüfen, ob Änderungen der Paketversion keine Fehler verursachen.
- Durch das Festlegen expliziter Versionen in
requirements.txtwird das konsistente Verhalten der App über verschiedene Bereitstellungen hinweg gewährleistet. - Schließen Sie bei der Verwendung von
uveineuv.lockDatei ein, um vollständig reproduzierbare Installationen über mehrere Bereitstellungen hinweg zu ermöglichen.
Installation und Verwaltung von Abhängigkeiten
Azure Databricks installiert die in requirements.txt, pyproject.toml und package.json definierten Bibliotheken direkt auf dem Container, der auf Ihren dedizierten Compute-Ressourcen ausgeführt wird. Sie sind für das Verwalten und Patchen dieser Abhängigkeiten verantwortlich.
Sie können Bibliotheken aus mehreren Quellen in Ihren Abhängigkeitsdateien angeben:
- Bibliotheken, die aus öffentlichen Repositorys wie PyPI und npm heruntergeladen wurden
- Private Repositorys, die sich mit Anmeldeinformationen authentifizieren, die in Azure Databricks-Geheimnissen gespeichert sind
- In Ihrem
/Volumes/Verzeichnis gespeicherte Bibliotheken (z. B/Volumes/<catalog>/<schema>/<volume>/<path>. )
Installieren aus privaten Repositorys
Um Pakete aus einem privaten Repository zu installieren, konfigurieren Sie Umgebungsvariablen für die Authentifizierung. Legen Sie PIP_INDEX_URL beispielsweise fest, dass sie auf Ihr privates Repository verweist:
env:
- name: PIP_INDEX_URL
valueFrom: my-pypi-secret
Ihre Arbeitsbereichsnetzwerkkonfiguration muss den Zugriff auf das private Repository zulassen. Siehe Konfigurieren von Netzwerken für Databricks-Apps.
Verwenden von Standardpaketrepositorys auf Arbeitsbereichsebene
Important
Dieses Feature befindet sich in der Betaversion. Um dies zu verwenden, muss ein Arbeitsbereichsadministrator Enable Workspace Repo Configuration for Databricks Apps auf der Seite Previews aktivieren. Siehe Manage Azure Databricks Previews.
Wenn ein Arbeitsbereichsadministrator Standardpaketrepositorys für den Arbeitsbereich konfiguriert, installieren Apps in diesem Arbeitsbereich Python und Node.js Pakete aus den vom Arbeitsbereich konfigurierten Repositorys anstelle der öffentlichen PyPI- und npm-Registrierungen. Dies ermöglicht App-Entwicklern, die Einstellungen des Paket-Repositorys des Unternehmens automatisch zu übernehmen, ohne die Konfiguration in jeder App zu duplizieren, wobei app-spezifische Überschreibungen weiterhin möglich sind.
Informationen zum Konfigurieren dieser Einstellungen auf Arbeitsbereichsebene finden Sie unter Konfigurieren von Standardpaketrepositorys.
Python-Pakete
Während der Paketinstallationsphase des Builds erbt Databricks Apps die Arbeitsbereichseinstellungen für die folgenden Umgebungsvariablen:
PIP_INDEX_URLPIP_EXTRA_INDEX_URLPIP_CERTUV_INDEX_URLUV_EXTRA_INDEX_URLSSL_CERT_FILE
App-spezifische Konfiguration hat Vorrang vor den Standardeinstellungen des Arbeitsbereichs. Wenn Sie eine der vorherigen Umgebungsvariablen (mit Ausnahme der unten aufgeführten Zertifikateinstellungen) in der Datei Ihrer App app.yaml festlegen, setzen die Werte in app.yaml den Arbeitsbereichseinstellungen für diese App außer Kraft.
Hinweis
Die Zertifikateinstellungen für PIP_CERT und SSL_CERT_FILE verwenden immer die für den Arbeitsbereich konfigurierten Werte und können in app.yaml nicht überschrieben werden.
Warning
Testen Sie Ihre Apps, nachdem der Workspace-Administrator die Vorschau aktiviert hat, und legen Sie PIP_INDEX_URL in app.yaml fest, wenn Sie weiterhin von einem anderen Index installieren müssen.
Node.js-Pakete
Wenn ein Arbeitsbereichsadministrator eine npm-Standardregistrierung konfiguriert, schreibt Databricks Apps die Arbeitsbereichsregistrierungskonfiguration .npmrc während der Bereitstellung in die Datei der App. Auf diese Weise können Apps Node.js Pakete, einschließlich privater Pakete, aus der vom Arbeitsbereich konfigurierten Registrierung installieren, ohne dass jede App ihre eigene Registrierungs-URL oder ein Authentifizierungstoken speichert.
Wenn Sie eine andere Registrierung für eine bestimmte App verwenden möchten, legen Sie die Umgebungsvariable NPMRC in der app.yaml Datei Ihrer App fest, um auf Ihre eigene npm-Konfiguration zu verweisen. App-spezifische Konfiguration hat Vorrang vor den Standardeinstellungen des Arbeitsbereichs.
Installieren von Wheel-Dateien aus Unity Catalog-Volumes
So installieren Sie Python-Pakete aus Wheel-Dateien, die in Unity Catalog-Volumes gespeichert sind:
- Fügen Sie das Unity-Katalogvolume als Ressource zu Ihrer App hinzu. Siehe Unity-Katalogvolume.
- Verweisen Sie direkt auf den vollständigen Wheel-Dateipfad in Ihrem
requirements.txt:
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl
Hinweis
Umgebungsvariablenverweise werden in requirements.txt nicht unterstützt. Sie müssen den vollständigen Pfad zur Wheel-Datei hartcodieren.
Um die Sicherheit beim Zugriff auf externe Paketrepositorys zu verbessern, verwenden Sie serverlose Ausgangssteuerelemente, um den Zugriff auf öffentliche Repositorys einzuschränken und private Netzwerke zu konfigurieren. Siehe Konfigurieren von Netzwerken für Databricks-Apps.