Hantera Python 3-paket i Azure Automation
Den här artikeln beskriver hur du importerar, hanterar och använder Python 3-paket i Azure Automation som körs i Sandbox-miljön i Azure och Hybrid Runbook Workers. Python-paket bör laddas ned på Hybrid Runbook Workers för att jobben ska kunna slutföras. För att förenkla runbookflöden kan du använda Python-paket och importera de moduler du behöver.
Information om hur du hanterar Python 2-paket finns i Hantera Python 2-paket.
Python-standardpaket
För att stödja Python 3.8-runbookflöden i Automation-tjänsten installeras vissa Python-paket som standard och en lista över paketen finns här. Du kan åsidosätta standardversionen genom att importera Python-paket till ditt Automation-konto.
Den importerade versionen i Automation-kontot har företräde. Information om hur du importerar ett enda paket finns i Importera ett paket. Information om hur du importerar ett paket med flera paket finns i Importera ett paket med beroenden.
Kommentar
Det finns inga standardpaket installerade för Python 3.10 (förhandsversion).
Paket som källfiler
Azure Automation stöder endast ett Python-paket som bara innehåller Python-kod och som inte innehåller andra språktillägg eller kod på andra språk. Azure Sandbox-miljön kanske dock inte har de kompilatorer som krävs för C/C++-binärfiler, så vi rekommenderar att du använder hjulfiler i stället.
Kommentar
För närvarande stöder Python 3.10 (förhandsversion) endast hjulfiler.
Python Package Index (PyPI) är en lagringsplats för programvara för programmeringsspråket Python. Observera följande filnamnsdelar när du väljer ett Python 3-paket som ska importeras till ditt Automation-konto från PyPI:
Välj en Python-version:
Filnamnsdel | beskrivning |
---|---|
cp38 | Automation stöder Python 3.8 för molnjobb. |
amd64 | Azures sandbox-processer är Windows 64-bitarsarkitektur . |
Till exempel:
- Importera Pandas – välj en hjulfil med ett namn som
pandas-1.2.3-cp38-win_amd64.whl
liknar .
Vissa Python-paket som är tillgängliga i PyPI tillhandahåller ingen hjulfil. I det här fallet laddar du ned källan (.zip eller .tar.gz filen) och genererar hjulfilen med hjälp av pip
.
Utför följande steg med en 64-bitars Windows-dator med Python 3.8.x och hjulpaketet installerat:
- Ladda ned källfilen
pandas-1.2.4.tar.gz
. - Kör pip för att hämta hjulfilen med följande kommando:
pip wheel --no-deps pandas-1.2.4.tar.gz
Importera ett paket
Från ditt Automation-konto väljer du Python-paket under Delade resurser. Välj sedan och Lägg till ett Python-paket.
På sidan Lägg till Python-paket väljer du ett lokalt paket att ladda upp. Paketet kan vara en .whl- eller .tar.gz-fil för Python 3.8 och .whl-fil för Python 3.10 (förhandsversion).
Ange ett namn och välj körningsversion som Python 3.8 eller Python 3.10 (förhandsversion).
Kommentar
För närvarande stöds Python 3.10-körningsversionen (förhandsversion) för både moln- och hybridjobb i alla offentliga regioner utom Australien, centrala 2, Sydkorea, södra, Sverige, södra, Jio Indien, centrala, Brasilien, sydöstra, Indien, centrala, Indien, västra, Förenade Arabemiraten, centrala och Gov-moln.
Välj Importera.
När ett paket har importerats visas det i listan på sidan Python-paket i ditt Automation-konto. Om du vill ta bort ett paket markerar du det och väljer sedan Ta bort.
Importera ett paket med beroenden
Du kan importera ett Python 3.8-paket och dess beroenden genom att importera följande Python-skript till en Python 3.8-runbook. Hanterad identitet måste vara aktiverat för ditt Automation-konto och ha Automation-deltagaråtkomst för att paketet ska kunna importeras.
https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py
Importera skriptet till en runbook
Information om hur du importerar runbooken finns i Importera en runbook från Azure Portal. Kopiera filen från GitHub till lagring som portalen kan komma åt innan du kör importen.
Kommentar
För närvarande stöds inte import av en runbook från Azure Portal för Python 3.10 (förhandsversion).
På sidan Importera en runbook anges runbook-namnet som standard så att det matchar skriptets namn. Om du har åtkomst till fältet kan du ändra namnet. Runbook-typen kan som standard vara Python 2.7. I så fall måste du ändra den till Python 3.8.
Köra runbooken för att importera paketet och beroenden
När du har skapat och publicerat runbooken kör du den för att importera paketet. Mer information om hur du kör runbooken finns i Starta en runbook i Azure Automation.
Skriptet (import_py3package_from_pypi.py
) kräver följande parametrar.
Parameter | Beskrivning |
---|---|
subscription_id | Prenumerations-id för Automation-kontot |
resource_group | Namnet på resursgruppen som Automation-kontot har definierats i |
automation_account | Namn på Automation-konto |
module_name | Namnet på modulen som ska importeras från pypi.org |
module_version | Modulens version |
Parametervärdet ska anges som en enskild sträng i nedanstående format:
-s <subscription_id> -g <resource_group> -a<automation_account> -m <module_name> -v <module_version>
Mer information om hur du använder parametrar med runbooks finns i Arbeta med runbook-parametrar.
Använda ett paket i en runbook
När paketet har importerats kan du använda det i en runbook. Lägg till följande kod för att lista alla resursgrupper i en Azure-prenumeration.
#!/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)
Kommentar
Python-paketet automationassets
är inte tillgängligt på pypi.org, så det är inte tillgängligt för import till en Windows Hybrid Runbook Worker.
Identifiera tillgängliga paket i sandbox-miljön
Använd följande kod för att lista de installerade standardmodulerna:
#!/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)
Python 3.8 PowerShell-cmdletar
Lägg till nytt Python 3.8-paket
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
Visa en lista över alla Python 3.8-paket
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
Hämta information om specifika paket
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
Ta bort Python 3.8-paketet
Remove-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name sockets
Uppdatera Python 3.8-paketet
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
Nästa steg
Information om hur du förbereder en Python-runbook finns i Skapa en Python-runbook.