Dela via


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.

Note

Python 2.7 och Python 3.8 stöds inte längre av den överordnade plattformen Python. Vi rekommenderar att du bara skapar runbooks i Python 3.10.

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.

Note

Det finns inga standardpaket installerade för Python 3.10.

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.

Note

För närvarande stöder Python 3.10 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 Description
cp310 Automation stöder Python 3.10 för molnjobb.
manylinux_x86_64 Azure-sandbox-processer är En Linux-baserad 64-bitarsarkitektur för Python 3.10-runbooks.

Till exempel:

  • Importera Pandas – välj en hjulfil med ett namn som liknar pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

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 fil) och genererar hjulfilen med pip.

Utför följande steg med en 64-bitars Linux-dator med Python 3.10.x och hjulpaketet installerat:

  1. Ladda ned källfilen pandas-1.2.4.tar.gz.
  2. 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

Följ dessa steg för att importera ett paket:

  1. Från ditt Automation-konto väljer du Python-paket under Delade resurser. Välj sedan och Lägg till ett Python-paket.

    Skärmbild av sidan Python-paket som visar Python-paket på den vänstra menyn och Lägg till ett Python-paket markerat.

  2. På sidan Lägg till Python-paket väljer du ett lokalt paket att ladda upp. Paketet kan vara .whl eller .tar.gz fil för Python 3.8- och .whl-filen för Python 3.10.

  3. Ange ett namn och välj Körningsversion som Python 3.8 eller Python 3.10.

  4. Välj Importera.

    Skärmbild som visar sidan Lägg till Python 3.8-paket med en uppladdad tar.gz fil markerad.

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.

Skärmbild som visar sidan Python 3.8-paket när ett paket har importerats.

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.

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.

Skärmbild som visar importsidan för Python 3-runbooken.

Kör 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 Description
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)

Note

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.