Dela via


Skapa dina Python Azure Functions-appar

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 enskild host.json fil 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 i requirements.txt till 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_INDEXING aktiverat. 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:

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 exempel pyproject.toml.

Följande verktyg kan konfigureras för att använda lokal version:

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