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.
Azure Functions unterstützt drei Buildoptionen zum Veröffentlichen Ihrer Python-Apps in Azure. Wählen Sie Ihre Buildmethode basierend auf Ihrer lokalen Umgebung, App-Abhängigkeiten und Laufzeitanforderungen aus.
Schneller Vergleich für Build-Aktionen
| Bereitstellungstyp | Wo Abhängigkeiten installiert werden | Typischer Anwendungsfall |
|---|---|---|
| Remotebuild (empfohlen) | Azure (App Service) | Standard, empfohlen für die meisten Benutzer |
| Lokaler Build | Ihr Computer | Linux/macOS-Entwickler, eingeschränkte Windows-Szenarien |
| Benutzerdefinierte Abhängigkeiten | Verarbeitet über zusätzliche Index-URL oder lokale Installation | Nicht-PyPI-Abhängigkeiten |
Überlegungen zum Bereitstellungspaket
Beachten Sie bei der Bereitstellung Ihrer Python-Funktions-App in Azure die folgenden Verpackungsanforderungen:
- Paketinhalte, nicht der Ordner: Stellen Sie den Inhalt Ihres Projektordners bereit, nicht den Ordner selbst.
-
Stammebene
host.json: Stellen Sie sicher, dass sich eine einzelnehost.jsonDatei im Stammverzeichnis des Bereitstellungspakets befindet und nicht in einem Unterordner geschachtelt ist. -
Entwicklungsdateien ausschließen: Sie können Ordner wie
tests/,.github/und.venv*/aus dem bereitgestellten Paket ausschließen, indem Sie sie in.funcignoreeinschließen. - Die Buildumgebung muss mit der Produktionsumgebung übereinstimmen: Ihre Abhängigkeiten müssen auf einem Ubuntu-Computer mit derselben Python-Version wie die Produktions-App erstellt werden. Remotebuild behandelt dieses Szenario automatisch.
-
Abhängigkeiten müssen in
./.python_packages/lib/site-packagesinstalliert werden: Remote Build installiert alle Abhängigkeiten, die inrequirements.txtin das richtige Verzeichnis eingetragen sind. -
Berücksichtigen Sie die Größe des Bereitstellungspakets: Große Abhängigkeitssätze erhöhen die Buildzeit, die Latenz beim Kaltstart und die Import- und Initialisierungszeit des Moduls. Anwendungen mit großen wissenschaftlichen oder ML-Bibliotheken (einschließlich
pytorch) sind besonders betroffen. - Remotebuild verfügt über ein Timeout von 60 Sekunden: Wenn die Abhängigkeitsinstallation den Grenzwert überschreitet, schlägt der Build fehl. In diesem Fall sollten Sie einen lokalen Build verwenden und mit vordefinierten Abhängigkeiten bereitstellen.
-
Der Modulimport hat eine 2-minütige Zeitbeschränkung: Das Laden und Indizieren des Python-Moduls während des Starts hat ein 2-Minütiges Limit für Python 3.13 und höher oder für ältere Python-Versionen mit
PYTHON_ENABLE_INIT_INDEXINGaktivierter Funktion. Wenn Ihre App diesen Wert überschreitet, reduzieren Sie die Importe auf oberster Ebene oder verwenden Sie Lazy Imports (Importieren von Modulen innerhalb des Funktionskörpers anstatt im globalen Gültigkeitsbereich).
Remotebuild
Für die Bereitstellung Ihrer Python-Anwendung in Functions ausschließlich über Code ist Remote Build die empfohlene Vorgehensweise.
Mit Remotebuild behandelt die Functions-Plattform die Paketinstallation und stellt die Kompatibilität mit der Remotelaufzeitumgebung sicher. Die Verwendung des Remotebuilds führt auch zu einem kleineren Bereitstellungspaket.
Sie können Remotebuild verwenden, wenn Sie Ihre Python-App mit den folgenden Tools veröffentlichen:
-
Azure Functions Core Tools: Der
func azure functionapp publishBefehl fordert standardmäßig einen Remotebuild an, wenn Python-Apps veröffentlicht werden. -
AZ CLI:
az functionapp deployment source config-zipverwendet Remotebuild standardmäßig bei der Bereitstellung von Python-Apps. - Visual Studio Code: Der Azure Functions: Deploy to Azure... Befehl verwendet immer einen Remote-Build.
-
Kontinuierliche Übermittlung mithilfe von GitHub-Aktionen: Die Azure/functions-action@v1-Aktion verwendet Remotebuild , wenn der
remote-buildParameter für den Flex-Verbrauchsplan festgelegttrueist oder wannscm-do-build-during-deploymentundenable-oryx-buildfür dedizierte Pläne festgelegttrueist.
Informationen zum Aktivieren des Remotebuilds für andere Szenarien, z. B. die kontinuierliche Übermittlung mit Azure-Pipelines, finden Sie unter Aktivieren des Remotebuilds.
Remote Build unterstützt auch benutzerdefinierte Paketindizes, wenn die App-Einstellung PIP_EXTRA_INDEX_URL verwendet wird. Weitere Informationen finden Sie unter Remotebuild.
Von Bedeutung
Der Remote-Build installiert alle Abhängigkeiten, die in requirements.txt aufgeführt sind. Um sicherzustellen, dass alle erforderlichen Pakete installiert sind, stellen Sie sicher, dass Sie diese Abhängigkeiten in die requirements.txt-Datei einschließen.
Lokaler Build
Wenn Sie keinen Remotebuild anfordern, werden abhängigkeiten stattdessen auf Ihrem Computer installiert. Das gesamte lokale Projekt und die abhängigkeiten werden dann lokal verpackt und in Ihrer Funktions-App bereitgestellt. Die Verwendung des lokalen Builds führt zu einem größeren Paketupload.
Außerdem müssen Sie Abhängigkeiten in das richtige Verzeichnis installieren. Verwenden Sie pip install --target="./.python_packages/lib/site-packages", um erforderliche Abhängigkeiten in Ihrem lokalen .python_packages/lib/site-packages-Ordner zu installieren.
Wenn Beispielsweise Ihre Abhängigkeiten in einer requirements.txt Datei aufgelistet sind, können Sie diesen Befehl ausführen:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
Verwenden Sie den lokalen Build in folgenden Fällen:
- Sie entwickeln lokal unter Linux oder macOS.
- Remotebuild ist nicht verfügbar oder ist eingeschränkt.
- Sie möchten Abhängigkeiten in einer anderen Datei als
requirements.txtdefinieren, z. B.pyproject.toml.
Die folgenden Tools können für die Verwendung des lokalen Builds konfiguriert werden:
-
Azure Functions Core Tools: Verwenden Sie
func azure functionapp publishmit der--no-build-Flagge. -
AZ CLI:
az functionapp deployment source config-zipmit der--build-remote=falseFlagge. -
Kontinuierliche Bereitstellung mithilfe von GitHub Actions: Legen Sie den Parameter
remote-buildauffalsefür den Flex Consumption plan fest oder legen Sie sowohlscm-do-build-during-deploymentals auchenable-oryx-buildauffalsefür Dedicated plans fest.
Von Bedeutung
Wenn Sie Ihre Python-Apps auf einem Windows-Computer entwickeln, verwenden Sie keinen lokalen Build. Pakete, die auf einem Windows-Computer basieren, haben häufig Probleme bei der Bereitstellung und Ausführung unter Linux in Azure Functions. Verwenden Sie nur den lokalen Build, wenn Sie sicher sind, dass das Paket auf Linux-basierten Systemen ausgeführt wird.
Benutzerdefinierte Abhängigkeiten
Azure Functions unterstützt benutzerdefinierte und andere Nicht-PyPI-Abhängigkeiten mithilfe der PIP_EXTRA_INDEX_URL App-Einstellung oder durch Erstellen eines lokalen Builds auf einem Linux- oder macOS-Computer.
Remote-Build mit einer zusätzlichen Index-URL
Wenn Ihre privaten Pakete online verfügbar sind, können Sie einen Remotebuild anfordern, nachdem Sie den privaten Paketspeicherort mithilfe der PIP_EXTRA_INDEX_URL App-Einstellung festgelegt haben.
Wenn Sie PIP_EXTRA_INDEX_URL festlegen, verwenden Remote-Builds diesen Paketfeed während der Bereitstellung.
PIP_INDEX_URL ersetzt den Paketindex. Erwägen Sie daher stattdessen die Verwendung PIP_EXTRA_INDEX_URL , um unerwartetes Verhalten zu verhindern.
Lokale Pakete oder Räder
Lokale Pakete und Räder werden beim Erstellen von Python Azure Function-Apps unterstützt.
Um diese Pakete oder Wheels mit remote build zu installieren, können Sie die Abhängigkeiten in Ihre requirements.txt Datei einschließen und mit aktiviertem remote build bereitstellen.
Ihre requirements.txt-Datei könnte beispielsweise wie folgt aussehen:
# Installing a custom wheel
<my_package_wheel>.whl
# Installing a local package
path/to/my/package
Um diese Abhängigkeiten mit lokalem Build zu installieren, installieren Sie die Abhängigkeiten in Ihrem lokalen .python_packages/lib/site-packages Ordner, und stellen Sie es mit deaktivierter Remotebuild bereit.
Wenn Sie beispielsweise die in Ihrer requirements.txt Datei definierten Pakete haben, können Sie sie mithilfe der folgenden Befehle und Core Tools installieren und veröffentlichen:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build