Partilhar via


Constrói as tuas aplicações Azure Functions em Python

O Azure Functions suporta três opções de compilação para publicar as suas aplicações Python no Azure. Escolha o método de construção com base no ambiente local, dependências da aplicação e requisitos de runtime.

Comparação rápida para ações de construção

Tipo de implantação Onde as dependências são instaladas Caso de utilização típica
Build remoto (recomendado) Azure (App Service) Padrão, recomendado para a maioria dos utilizadores
Construção local A tua máquina Desenvolvedores Linux/macOS, cenários limitados para Windows
Dependências personalizadas Tratado através de URL de índice extra ou instalação local Dependências não-PyPI

Considerações sobre o pacote de implementação

Ao implementar a sua aplicação de funções Python para Azure, tenha em mente estes requisitos de empacotamento:

  • Conteúdo do pacote, não da pasta: Implemente o conteúdo da pasta do seu projeto, não a pasta em si.
  • Nível host.jsonraiz: Certifique-se de que um único host.json ficheiro está na raiz do pacote de implementação, não estando dentro de uma subpasta.
  • Excluir ficheiros de desenvolvimento: Pode excluir pastas como tests/, .github/, e .venv*/ do pacote implementado incluindo-as em .funcignore.
  • O ambiente de compilação deve corresponder ao ambiente de produção: as suas dependências devem ser construídas numa máquina Ubuntu usando a mesma versão em python da aplicação de produção. O remote build gere este cenário automaticamente.
  • As dependências devem ser instaladas em: ./.python_packages/lib/site-packagesA compilação remota instala todas as dependências listadas requirements.txt no diretório correto.
  • Tenha em mente o tamanho do pacote de implementação: conjuntos de dependências grandes aumentam o tempo de construção, a latência de arranque a frio e o tempo de importação e inicialização do módulo. Aplicações com grandes bibliotecas científicas ou de aprendizagem automática (incluindo pytorch) são especialmente afetadas.
  • A compilação remota tem um timeout de 60 segundos: Se a instalação da dependência exceder o limite, a compilação falha. Nesse caso, considere usar build local e desenvolver com dependências pré-compiladas.
  • A importação de módulos tem um limite de tempo de 2 minutos: o carregamento e indexação de funções em Python durante o arranque tem um limite de 2 minutos para Python 3.13 e superiores, ou para versões mais antigas de python com PYTHON_ENABLE_INIT_INDEXING ativação. Se a tua aplicação ultrapassar este limite, reduz as importações de topo ou usa importações preguiçosas (importar módulos dentro do corpo da função em vez de no âmbito global).

Compilação remota

A compilação remota é a abordagem recomendada para uma implementação apenas de código da sua aplicação Python em Functions.

Com build remota, a plataforma Functions gere a instalação dos pacotes e garante compatibilidade com o ambiente de execução remoto. Usar build remota também resulta num pacote de implementação mais pequeno.

Pode usar a compilação remota quando publica a sua aplicação Python usando estas ferramentas:

Para permitir a compilação remota para outros cenários, como entrega contínua com Azure Pipelines, veja Ativar a Construção Remota.

A compilação remota também suporta índices personalizados de pacotes quando utiliza a configuração da PIP_EXTRA_INDEX_URL aplicação. Para obter mais informações, consulte Compilação remota.

Importante

A compilação remota instala todas as dependências listadas em requirements.txt. Para garantir que todos os pacotes necessários estão instalados, certifique-se de incluir essas dependências no seu requirements.txt ficheiro.

Construção local

Se não solicitares uma build remota, então as dependências são instaladas na tua máquina. Todo o projeto local e as dependências são então empacotados localmente e implementados na tua aplicação de funções. Usar compilações locais resulta num carregamento de pacote maior.

Também precisas de instalar dependências no diretório correto. Use pip install --target="./.python_packages/lib/site-packages" para instalar as dependências necessárias na sua pasta local .python_packages/lib/site-packages . Por exemplo, se tiver as suas dependências listadas num requirements.txt ficheiro, pode executar este comando:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt

Use a compilação local quando:

  • Estás a desenvolver localmente em Linux ou macOS.
  • A montagem remota não está disponível ou é limitada.
  • Quer definir dependências num ficheiro diferente de requirements.txt, como pyproject.toml.

As seguintes ferramentas podem ser configuradas para usar compilações locais:

Importante

Ao desenvolver as suas aplicações Python num computador Windows, não use compilação local. Os pacotes construídos num computador Windows frequentemente têm problemas para serem implementados e executados no Linux no Azure Functions. Só usa compilações locais se estiveres confiante de que o pacote corre em sistemas baseados em Linux.

Dependências personalizadas

O Azure Functions suporta dependências personalizadas e outras que não sejam PyPI, utilizando a PIP_EXTRA_INDEX_URL configuração da aplicação ou criando uma compilação local num computador Linux ou macOS.

Compilação remota com um URL adicional de índice

Quando os seus pacotes privados estiverem disponíveis online, pode solicitar uma compilação remota após definir a localização do pacote privado usando a definição de aplicação de PIP_EXTRA_INDEX_URL. Quando defines PIP_EXTRA_INDEX_URL, compilações remotas usam este feed de pacotes durante a implementação. PIP_INDEX_URL substitui o índice do pacote, por isso considere usar PIP_EXTRA_INDEX_URL em vez disso para evitar comportamentos inesperados.

Pacotes ou rodas locais

Pacotes e rodas locais são suportados na construção de aplicações Azure Function em Python.

Para instalar estes pacotes ou rodas usando compilação remota, pode incluir as dependências no seu requirements.txt ficheiro e implementar com a compilação remota ativada.

Por exemplo, o seu requirements.txt ficheiro pode assemelhar-se ao seguinte excerto:

 # Installing a custom wheel
 <my_package_wheel>.whl
 
 # Installing a local package
 path/to/my/package

Para instalar estas dependências usando a compilação local, instala as dependências na tua pasta local .python_packages/lib/site-packages e implementa com a compilação remota desativada. Por exemplo, se tiver os pacotes definidos no seu requirements.txt ficheiro, pode instalar e publicar usando os seguintes comandos e as Ferramentas Core:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build