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.

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 Description
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.whlliknar .

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:

  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

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

    Screenshot of the Python packages page shows Python packages in the left menu and Add a Python package highlighted.

  2. 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).

  3. 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.

  4. Välj Importera.

    Screenshot shows the Add Python 3.8 Package page with an uploaded tar.gz file selected.

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.

Screenshot shows the Python 3.8 packages page after a package has been imported.

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.

Screenshot shows the Python 3 runbook import page.

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.