Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Azure Functions har stöd för tre byggalternativ för att publicera dina Python-appar till Azure. Välj din byggmetod baserat på din lokala miljö, appberoenden och körningskrav.
Snabbjämförelse för byggåtgärder
| Distributionstyp | Var beroenden är installerade | Vanligt användningsfall |
|---|---|---|
| Fjärrbygge (rekommenderas) | Azure (App Service) | Standard, rekommenderas för de flesta användare |
| Lokal version | Din dator | Linux/macOS-utvecklare, begränsade Windows-scenarier |
| Anpassade beroenden | Hanterad via extra index-URL eller lokal installation. | Icke-PyPI-beroenden |
Överväganden för distributionspaket
När du distribuerar python-funktionsappen till Azure bör du tänka på följande paketeringskrav:
- Paketinnehåll, inte mappen: Distribuera innehållet i projektmappen, inte själva mappen.
-
Rotnivå
host.json: Kontrollera att en enskildhost.jsonfil finns i roten för distributionspaketet, inte kapslad i en undermapp. -
Exkludera utvecklingsfiler: Du kan exkludera mappar som
tests/,.github/och.venv*/från det distribuerade paketet genom att inkludera dem i.funcignore. - Byggmiljön måste matcha produktionsmiljön: Dina beroenden måste byggas på en ubuntu-dator med samma Python-version som produktionsappen. Fjärrbygget hanterar det här scenariot automatiskt.
-
Beroenden måste installeras i
./.python_packages/lib/site-packages: Fjärrbyggnaden installerar alla beroenden som listas irequirements.txttill den korrekta katalogen. -
Tänk på storleken på distributionspaketet: Stora beroendeuppsättningar ökar byggtiden, svarstiden för kallstart och modulimport och initieringstid. Program med stora vetenskapliga bibliotek eller ML-bibliotek (inklusive
pytorch) påverkas särskilt. - Fjärrversionen har en tidsgräns på 60 sekunder: Om beroendeinstallationen överskrider gränsen misslyckas bygget. I så fall bör du överväga att använda en lokal version och distribuera med fördefinierade beroenden.
-
Modulimporten har en tidsgräns på 2 minuter: Python-modulinläsning och funktionsindexering under start har en gräns på 2 minuter för Python 3.13 och senare, eller för äldre Python-versioner med
PYTHON_ENABLE_INIT_INDEXINGaktiverat. Om din app överskrider detta kan du minska importen på den översta nivån eller använda lata importer (importera moduler i funktionstexten i stället för i det globala omfånget).
Fjärrbygge
Fjärrbygge är den rekommenderade metoden för en kodbaserad distribution av Python-appen till Functions.
Med fjärrbygge hanterar Functions-plattformen paketinstallationen och säkerställer kompatibilitet med fjärrkörningsmiljön. Om du använder fjärrbygge resulterar det också i ett mindre distributionspaket.
Du kan använda fjärrversion när du publicerar Python-appen med hjälp av följande verktyg:
-
Azure Functions Core Tools:
func azure functionapp publishkommandot begär en fjärrversion som standard vid publicering av Python-appar. -
AZ CLI:
az functionapp deployment source config-zipanvänder fjärrbygge som standard när du distribuerar Python-appar. - Visual Studio Code: Kommandot Azure Functions: Deploy to Azure... använder alltid en fjärrversion.
-
Kontinuerlig leverans med GitHub Actions: Åtgärden Azure/functions-action@v1 använder fjärrbygge när parametern
remote-buildär inställd påtrueför Flex Consumption-planen eller närscm-do-build-during-deploymentochenable-oryx-buildär inställd påtrueför dedikerade planer.
Information om hur du aktiverar fjärrbygge för andra scenarier, till exempel Kontinuerlig leverans med Azure Pipelines, finns i Aktivera fjärrversion.
Fjärrversion stöder även anpassade paketindex när du använder appinställningen PIP_EXTRA_INDEX_URL . Mer information finns i Fjärrbygge.
Viktigt!
Fjärrbygget installerar alla beroenden som anges i requirements.txt. Se till att alla nödvändiga paket är installerade genom att inkludera dessa beroenden i requirements.txt filen.
Lokal version
Om du inte begär en fjärrversion installeras beroenden i stället på datorn. Hela det lokala projektet och beroendena paketeras sedan lokalt och distribueras till din funktionsapp. Att använda en lokal kompilering leder till en större paketuppladdning.
Du behöver också installera beroenden i rätt katalog. Använd pip install --target="./.python_packages/lib/site-packages" för att installera nödvändiga beroenden i din lokala .python_packages/lib/site-packages mapp.
Om du till exempel har dina beroenden listade i en requirements.txt fil kan du köra det här kommandot:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
Använd lokal version när:
- Du utvecklar lokalt i Linux eller macOS.
- Fjärrbygge är inte tillgängligt eller är begränsat.
- Du vill definiera beroenden i en annan fil än
requirements.txt, till exempelpyproject.toml.
Följande verktyg kan konfigureras för att använda lokal version:
-
Azure Functions Core Tools: använd
func azure functionapp publishmed--no-buildflaggan. -
AZ CLI:
az functionapp deployment source config-zipmed--build-remote=falseflaggan. -
Kontinuerlig leverans med hjälp av GitHub Actions: ange parametern
remote-buildtillfalseför Flex Consumption-planen eller angescm-do-build-during-deploymentochenable-oryx-buildtillfalseför Dedikerade planer.
Viktigt!
När du utvecklar dina Python-appar på en Windows-dator ska du inte använda lokal version. Paket som bygger på en Windows-dator har ofta problem med att distribueras till och köras på Linux i Azure Functions. Använd endast lokal version om du är säker på att paketet körs på Linux-baserade system.
Anpassade beroenden
Azure Functions stöder anpassade och andra icke-PyPI-beroenden med hjälp av appinställningen PIP_EXTRA_INDEX_URL eller genom att skapa en lokal version på en Linux- eller macOS-dator.
Fjärrversion med en extra index-URL
När dina privata paket är tillgängliga online kan du begära en fjärrversion när du har angett den privata paketplatsen med hjälp av appinställningen PIP_EXTRA_INDEX_URL .
När du anger PIP_EXTRA_INDEX_URLanvänder fjärrversioner den här paketfeeden under distributionen.
PIP_INDEX_URL ersätter paketindexet, så överväg att använda PIP_EXTRA_INDEX_URL i stället för att förhindra oväntat beteende.
Lokala paket eller hjul
Lokala paket och hjul stöds när du skapar Python Azure Function-appar.
Om du vill installera dessa paket eller hjul med fjärrbygge kan du inkludera beroendena i requirements.txt filen och distribuera med fjärrversion aktiverat.
Din requirements.txt-fil kan till exempel se ut som följande kodfragment:
# Installing a custom wheel
<my_package_wheel>.whl
# Installing a local package
path/to/my/package
Om du vill installera dessa beroenden med hjälp av lokal version installerar du beroendena i din lokala .python_packages/lib/site-packages mapp och distribuerar med fjärrversionen inaktiverad.
Om du till exempel har de paket som definierats i requirements.txt filen kan du installera och publicera med hjälp av följande kommandon och Core Tools:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build