Gestire pacchetti Python 3 in Automazione di Azure
Questo articolo illustra come importare, gestire e usare i pacchetti Python 3 in Automazione di Azure in esecuzione nell'ambiente sandbox di Azure e nei ruoli di lavoro ibridi per runbook. Per eseguire correttamente il processo i pacchetti Python devono essere scaricati nei ruoli di lavoro ibridi. Per favorire la semplificazione dei runbook, è possibile importare i moduli necessari usando pacchetti Python.
Per informazioni sulla gestione dei pacchetti Python 2, vedere Gestire i pacchetti Python 2.
Pacchetti Python predefiniti
Per supportare i runbook Python 3.8 nel servizio di automazione, alcuni pacchetti Python vengono installati per impostazione predefinita ed è possibile trovare un elenco di questi pacchetti qui. La versione predefinita può essere sostituita importando pacchetti Python nell'account di Automazione.
La preferenza viene assegnata alla versione importata nell'account di Automazione. Per importare un singolo pacchetto, vedere Importare un pacchetto. Per importare un pacchetto con più pacchetti, vedere Importare un pacchetto con dipendenze.
Nota
Non sono installati pacchetti predefiniti per Python 3.10 (anteprima).
Pacchetti come file di origine
Automazione di Azure supporta solo un pacchetto Python che contiene solo codice Python e non include altre estensioni del linguaggio o codice in altri linguaggi. L'ambiente sandbox di Azure potrebbe tuttavia non avere i compilatori necessari per i file binari C/C++, quindi è consigliabile usare file wheel.
Nota
Python 3.10 (anteprima) supporta attualmente solo i file wheel.
Python Package Index (PyPI) è un repository di software per il linguaggio di programmazione Python. Quando si seleziona un pacchetto Python 3 da importare nell'account di Automazione da PyPI, prendere nota delle parti del nome file seguenti:
Selezionare una versione di Python:
Parte del nome file | Descrizione |
---|---|
cp38 | Automazione supporta Python 3.8 per i processi cloud. |
amd64 | I processi sandbox di Azure sono basati sull'architettura Windows a 64 bit. |
Ad esempio:
- Per importare pandas: selezionare un file wheel con un nome simile a
pandas-1.2.3-cp38-win_amd64.whl
.
Alcuni pacchetti Python disponibili in PyPI non forniscono un file wheel. In questo caso, scaricare l'origine (file con estensione zip o tar.gz) e generare il file wheel usando pip
.
Seguire questa procedura usando un computer Windows a 64 bit con il pacchetto Python 3.8.x e wheel installato:
- Scaricare il file di origine
pandas-1.2.4.tar.gz
. - Eseguire pip per ottenere il file wheel con il comando seguente:
pip wheel --no-deps pandas-1.2.4.tar.gz
Importare un pacchetto
Nell'account di Automazione selezionare Pacchetti Python in Risorse condivise. Quindi selezionare + Aggiungi un pacchetto Python.
Nella pagina Aggiungi pacchetto Python selezionare un pacchetto locale da caricare. Il pacchetto può essere un file .whl o .tar.gz per Python 3.8 e un file .whl per Python 3.10 (anteprima).
Immettere un nome e selezionare la versione di runtime come Python 3.8 o Python 3.10 (anteprima).
Nota
La versione del runtime di Python 3.10 (anteprima) è attualmente supportata sia per i processi cloud che ibridi in tutte le aree pubbliche, ad eccezione di Australia centrale 2, Corea meridionale, Svezia meridionale, Jio - India centrale, Brasile sud-orientale, India centrale, India occidentale, Emirati Arabi Uniti centrali e cloud per enti pubblici.
Selezionare Importa.
Dopo l'importazione, il pacchetto viene elencato nella pagina dei pacchetti Python dell'account di Automazione. Per rimuovere un pacchetto, selezionarlo e fare clic su Elimina.
Importare un pacchetto con dipendenze
È possibile importare un pacchetto Python 3.8 e le relative dipendenze importando il seguente script Python in un runbook Python 3.8. È necessario assicurarsi che l'identità gestita sia abilitata per l'account di Automazione e disponga di autorizzazioni di Collaboratore Automazione per l'importazione corretta del pacchetto.
https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py
Importazione dello script in un runbook
Per informazioni sull'importazione del runbook, vedere Importare un runbook dal portale di Azure. Copiare il file da GitHub nell'archiviazione a cui il portale può accedere prima di eseguire l'importazione.
Nota
L'importazione di un runbook dal portale di Azure non è attualmente supportata per Python 3.10 (anteprima).
Per impostazione predefinita, la pagina Importa un runbook corrisponde al nome dello script. Se si ha accesso al campo, è possibile modificare il nome. Il tipo di runbook può usare sempre Python 2.7. In caso affermativo, assicurarsi di modificarlo in Python 3.8.
Esecuzione del runbook per importare il pacchetto e le dipendenze
Dopo aver creato e pubblicato il runbook, eseguirlo per importare il pacchetto. Per l’esecuzione di un runbook, vedere Avviare un runbook in Automazione di Azure.
Lo script (import_py3package_from_pypi.py
) richiede i parametri seguenti.
Parametro | Descrizione |
---|---|
subscription_id | ID sottoscrizione dell'account di Automazione |
resource_group | Nome del gruppo di risorse definito dall'account di Automazione in |
automation_account | Nome dell'account di Automazione |
module_name | Nome del modulo da importare da pypi.org |
module_version | Versione del modulo |
Il valore del parametro deve essere fornito come stringa singola nel seguente formato:
-s <id_sottoscrizione> -g <gruppo_risorse> -a<account_automazione> -m <nome_modulo> -v <versione_modulo>
Per altre informazioni sull'uso dei parametri con i runbook, vedere Usare i parametri del runbook.
Usare un pacchetto in un runbook
Il pacchetto importato può essere usato in un runbook. Aggiungere il codice seguente per elencare tutti i gruppi di risorse in una sottoscrizione di 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
Il pacchetto automationassets
di Python non è disponibile in pypi.org, quindi non è disponibile per l'importazione in un ruolo di lavoro ibrido per runbook di Windows.
Identificare i pacchetti disponibili nella sandbox
Usare il codice seguente per elencare i moduli installati predefiniti:
#!/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)
Cmdlet di PowerShell per Python 3.8
Aggiungere un nuovo pacchetto 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
Elencare tutti i pacchetti 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
Ottenere informazioni dettagliate su un pacchetto specifico
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
Rimuovere il pacchetto Python 3.8
Remove-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name sockets
Aggiornare il pacchetto 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
Passaggi successivi
Per preparare un runbook Python, vedere Creare un runbook di Python.