Gerir pacotes Python 3 na Automatização do Azure
Este artigo descreve como importar, gerenciar e usar pacotes Python 3 na Automação do Azure em execução no ambiente de área restrita do Azure e no Hybrid Runbook Workers. Os pacotes Python devem ser transferidos em Funções de Trabalho de Runbook Híbridas para uma execução bem-sucedida da tarefa. Para ajudar a simplificar os runbooks, pode utilizar pacotes Python para importar os módulos de que precisa.
Para obter informações sobre como gerenciar pacotes Python 2, consulte Gerenciar pacotes Python 2.
Pacotes Python padrão
Para suportar runbooks Python 3.8 no serviço de Automatização, alguns pacotes Python são instalados por predefinição e uma lista destes pacotes está aqui. A versão predefinida pode ser substituída ao importar pacotes Python para a sua conta de Automatização.
A preferência é dada à versão importada na sua conta de Automatização. Para importar um único pacote, consulte Importar um pacote. Para importar um pacote com vários pacotes, consulte Importar um pacote com dependências.
Nota
Não há pacotes padrão instalados para Python 3.10 (visualização).
Pacotes como arquivos de origem
A Automação do Azure dá suporte apenas a um pacote Python que contém apenas código Python e não inclui outras extensões de linguagem ou código em outras linguagens. No entanto, o ambiente de Sandbox do Azure pode não ter os compiladores necessários para binários C/C++, portanto, é recomendável usar arquivos de roda em vez disso.
Nota
Atualmente, o Python 3.10 (visualização) suporta apenas arquivos de roda.
O Python Package Index (PyPI) é um repositório de software para a linguagem de programação Python. Ao selecionar um pacote Python 3 para importar do PyPI para sua conta de automação, observe as seguintes partes do nome do arquivo:
Selecione uma versão do Python:
Parte do nome do arquivo | Description |
---|---|
CP38 | A automação suporta Python 3.8 para trabalhos na nuvem. |
AMD64 | Os processos de área restrita do Azure são arquitetura de 64 bits do Windows. |
Por exemplo:
- Para importar pandas - selecione um arquivo de roda com um nome semelhante a
pandas-1.2.3-cp38-win_amd64.whl
.
Alguns pacotes Python disponíveis no PyPI não fornecem um arquivo de roda. Nesse caso, baixe o arquivo de origem (.zip ou .tar.gz) e gere o arquivo wheel usando pip
.
Execute as seguintes etapas usando uma máquina Windows de 64 bits com Python 3.8.x e pacote wheel instalado:
- Transfira o ficheiro
pandas-1.2.4.tar.gz
de origem . - Execute pip para obter o arquivo wheel com o seguinte comando:
pip wheel --no-deps pandas-1.2.4.tar.gz
Importar um pacote
Na sua Conta de Automatização, selecione Pacotes Python em Recursos Partilhados. Selecione + Adicionar um pacote Python.
Na página Adicionar Pacote Python , selecione um pacote local para carregar. O pacote pode ser um ficheiro .whl ou .tar.gz para o ficheiro Python 3.8 e .whl para Python 3.10 (pré-visualização).
Introduza um nome e selecione a Versão do Runtime como Python 3.8 ou Python 3.10 (pré-visualização).
Nota
Atualmente, a versão de tempo de execução do Python 3.10 (visualização) é suportada para trabalhos Cloud e Hybrid em todas as regiões Públicas, exceto Austrália Central2, Coreia do Sul, Sul da Suécia, Jio India Central, Sudeste do Brasil, Índia Central, Índia Ocidental, UAE Central e nuvens Gov.
Selecione Importar.
Após a importação de um pacote, este é apresentado na página pacotes Python na sua conta de Automatização. Para remover um pacote, selecione o pacote e selecione Eliminar.
Importar um pacote com dependências
Pode importar um pacote Python 3.8 e as respetivas dependências ao importar o seguinte script Python para um runbook Python 3.8. Certifique-se de que a Identidade gerida está ativada para a sua conta de Automatização e tem acesso de Contribuidor de Automatização para uma importação bem-sucedida do pacote.
https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py
Importar o script para um runbook
Para obter informações sobre como importar o runbook, consulte Importar um runbook do portal do Azure. Copie o ficheiro do GitHub para o armazenamento ao qual o portal pode aceder antes de executar a importação.
Nota
Atualmente, a importação de um runbook do Portal do Azure não é suportada para Python 3.10 (visualização).
A página Importar um runbook predefine o nome do runbook para corresponder ao nome do script. Se tiver acesso ao campo, pode alterar o nome. O tipo de runbook pode ser predefinido para Python 2.7. Se isto acontecer, certifique-se de que o altera para Python 3.8.
Executar o runbook para importar o pacote e as dependências
Depois de criar e publicar o runbook, execute-o para importar o pacote. Consulte Iniciar um runbook na Automatização do Azure para obter detalhes sobre a execução do runbook.
O script (import_py3package_from_pypi.py
) requer os seguintes parâmetros.
Parâmetro | Descrição |
---|---|
subscription_id | ID da Subscrição da conta de Automatização |
resource_group | Nome do grupo de recursos no qual a conta de Automatização está definida |
automation_account | Nome da conta de Automatização |
module_name | Nome do módulo a ser importado pypi.org |
module_version | Versão do módulo |
O valor do parâmetro deve ser fornecido como uma única cadeia no formato abaixo:
-s <subscription_id> -g <resource_group> -a<automation_account> -m <module_name> -v <module_version>
Para obter mais informações sobre como usar parâmetros com runbooks, consulte Trabalhar com parâmetros de runbook.
Usar um pacote em um runbook
Com o pacote importado, você pode usá-lo em um runbook. Adicione o código a seguir para listar todos os grupos de recursos em uma assinatura do Azure.
#!/usr/bin/env python3
import os
import requests
# printing environment variables
endPoint = os.getenv('IDENTITY_ENDPOINT')+"?resource=https://management.azure.com/"
identityHeader = os.getenv('IDENTITY_HEADER')
payload={}
headers = {
'X-IDENTITY-HEADER': identityHeader,
'Metadata': 'True'
}
response = requests.request("GET", endPoint, headers=headers, data=payload)
print(response.text)
Nota
O pacote Python automationassets
não está disponível no pypi.org, portanto, não está disponível para importação em um runbook worker híbrido do Windows.
Identificar pacotes disponíveis na área restrita
Use o código a seguir para listar os módulos instalados padrão:
#!/usr/bin/env python3
import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
for i in installed_packages])
for package in installed_packages_list:
print(package)
Cmdlets do Python 3.8 PowerShell
Adicionar novo pacote Python 3.8
New-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name requires.io -ContentLinkUri https://files.pythonhosted.org/packages/7f/e2/85dfb9f7364cbd7a9213caea0e91fc948da3c912a2b222a3e43bc9cc6432/requires.io-0.2.6-py2.py3-none-any.whl
Response
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : requires.io
IsGlobal : False
Version :
SizeInBytes : 0
ActivityCount : 0
CreationTime : 9/26/2022 1:37:13 PM +05:30
LastModifiedTime : 9/26/2022 1:37:13 PM +05:30
ProvisioningState : Creating
Listar todos os pacotes Python 3.8
Get-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja
Response :
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : cryptography
IsGlobal : False
Version :
SizeInBytes : 0
ActivityCount : 0
CreationTime : 9/26/2022 11:52:28 AM +05:30
LastModifiedTime : 9/26/2022 12:11:00 PM +05:30
ProvisioningState : Failed
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : requires.io
IsGlobal : False
Version :
SizeInBytes : 0
ActivityCount : 0
CreationTime : 9/26/2022 1:37:13 PM +05:30
LastModifiedTime : 9/26/2022 1:39:04 PM +05:30
ProvisioningState : ContentValidated
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : sockets
IsGlobal : False
Version : 1.0.0
SizeInBytes : 4495
ActivityCount : 0
CreationTime : 9/20/2022 12:46:28 PM +05:30
LastModifiedTime : 9/22/2022 5:03:42 PM +05:30
ProvisioningState : Succeeded
Obter detalhes sobre o pacote específico
Get-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name sockets
Response
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : sockets
IsGlobal : False
Version : 1.0.0
SizeInBytes : 4495
ActivityCount : 0
CreationTime : 9/20/2022 12:46:28 PM +05:30
LastModifiedTime : 9/22/2022 5:03:42 PM +05:30
ProvisioningState : Succeeded
Remover pacote Python 3.8
Remove-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name sockets
Atualizar pacote Python 3.8
Set-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name requires.io -ContentLinkUri https://files.pythonhosted.org/packages/7f/e2/85dfb9f7364cbd7a9213caea0e91fc948da3c912a2b222a3e43bc9cc6432/requires.io-0.2.6-py2.py3-none-any.whl
ResourceGroupName : mahja
AutomationAccountName : tarademo
Name : requires.io
IsGlobal : False
Version : 0.2.6
SizeInBytes : 10109
ActivityCount : 0
CreationTime : 9/26/2022 1:37:13 PM +05:30
LastModifiedTime : 9/26/2022 1:43:12 PM +05:30
ProvisioningState : Creating
Próximos passos
Para preparar um runbook do Python, consulte Criar um runbook do Python.