Správa balíčků Pythonu 3 v Azure Automation

Tento článek popisuje, jak importovat, spravovat a používat balíčky Pythonu 3 ve službě Azure Automation spuštěné v prostředí sandboxu Azure a hybrid Runbook Worker. Balíčky Pythonu by se měly stahovat do pracovních procesů Hybrid Runbook, aby bylo možné úlohy úspěšně provést. Pokud chcete zjednodušit runbooky, můžete použít balíčky Pythonu k importu modulů, které potřebujete.

Informace o správě balíčků Pythonu 2 najdete v tématu Správa balíčků Pythonu 2.

Výchozí balíčky Pythonu

Kvůli podpoře runbooků Pythonu 3.8 ve službě Automation se ve výchozím nastavení instalují některé balíčky Pythonu a seznam těchto balíčků najdete tady. Výchozí verzi je možné přepsat importem balíčků Pythonu na účet Automation.

Přednost má importovaná verze na vašem účtu Automation. Pokud chcete importovat jeden balíček, přečtěte si téma Import balíčku. Pokud chcete importovat balíček s více balíčky, přečtěte si téma Import balíčku se závislostmi.

Poznámka:

Pro Python 3.10 (Preview) nejsou nainstalované žádné výchozí balíčky.

Balíčky jako zdrojové soubory

Azure Automation podporuje pouze balíček Pythonu, který obsahuje jenom kód Pythonu a neobsahuje další jazyková rozšíření ani kód v jiných jazycích. Prostředí Azure Sandbox ale nemusí mít požadované kompilátory pro binární soubory C/C++, proto se doporučuje místo toho používat soubory kolečka.

Poznámka:

Python 3.10 (Preview) v současné době podporuje pouze soubory kol.

Index balíčků Pythonu (PyPI) je úložiště softwaru pro programovací jazyk Python. Při výběru balíčku Pythonu 3 pro import do účtu Automation z PyPI si všimněte následujících částí názvu souboru:

Vyberte verzi Pythonu:

Část Název souboru Popis
cp38 Automatizace podporuje Python 3.8 pro cloudové úlohy.
amd64 Procesy sandboxu Azure jsou 64bitová architektura Windows.

Příklad:

  • Import knihovny pandas – vyberte soubor kolečka s podobným názvem jako pandas-1.2.3-cp38-win_amd64.whl.

Některé balíčky Pythonu, které jsou k dispozici na PyPI, neposkytují soubor kola. V tomto případě stáhněte zdroj (.zip nebo .tar.gz soubor) a vygenerujte soubor kola pomocí pip.

Pomocí 64bitového počítače s Windows s nainstalovaným balíčkem Python 3.8.x a wheel proveďte následující kroky:

  1. Stáhněte si zdrojový soubor pandas-1.2.4.tar.gz.
  2. Spuštěním příkazu pip získejte soubor kola pomocí následujícího příkazu: pip wheel --no-deps pandas-1.2.4.tar.gz

Import balíčku

  1. Na svém účtu Automation vyberte Balíčky Pythonu v části Sdílené prostředky. Pak vyberte + Přidat balíček Pythonu.

    Snímek obrazovky se stránkou balíčků Pythonu znázorňující balíčky Pythonu v levé nabídce a zvýrazněnou možností Přidat balíček Pythonu

  2. Na stránce Přidat balíček Pythonu vyberte místní balíček, který chcete nahrát. Balíček může být soubor .whl nebo .tar.gz pro Python 3.8 a .whl pro Python 3.10 (Preview).

  3. Zadejte název a vyberte Verzi modulu runtime jako Python 3.8 nebo Python 3.10 (Preview).

    Poznámka:

    V současné době se verze modulu runtime Python 3.10 (Preview) podporuje pro úlohy cloudových i hybridních úloh ve všech veřejných oblastech s výjimkou austrálie – střed 2, Koreje – jih, Švédska – jih, Jio Indie – střed, Brazílie – jih, Indie – střed, Indie – západ, Spojené arabské emiráty – střed a cloudy Gov.

  4. Vyberte Importovat.

    Snímek obrazovky znázorňující stránku Přidat balíček Pythonu 3.8 s vybraným nahraným tar.gz souborem

Po importu bude balíček uvedený na stránce Balíčky Pythonu na vašem účtu Automation. Pokud chcete balíček odebrat, vyberte ho a vyberte Odstranit.

Snímek obrazovky se stránkou balíčků Pythonu 3.8 po importu balíčku

Import balíčku se závislostmi

Balíček Pythonu 3.8 a jeho závislosti můžete importovat importem následujícího skriptu Pythonu do runbooku Pythonu 3.8. Ujistěte se, že je pro váš účet Automation povolená spravovaná identita a že má pro úspěšný import balíčku přístup Přispěvatel služby Automation.

https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py

Import skriptu do runbooku

Informace o importu runbooku najdete v tématu Import runbooku z Azure Portal. Před spuštěním importu zkopírujte soubor z GitHubu do úložiště, ke kterému má portál přístup.

Poznámka:

V současné době se import runbooku z webu Azure Portal nepodporuje pro Python 3.10 (Preview).

Na stránce Import runbooku je výchozí název runbooku tak, aby odpovídal názvu skriptu. Pokud máte přístup k poli, můžete název změnit. Typ runbooku může být ve výchozím nastavení Python 2.7. Pokud ano, nezapomeňte ho změnit na Python 3.8.

Snímek obrazovky znázorňující stránku importu runbooku Python 3

Spuštění runbooku pro import balíčku a závislostí

Po vytvoření a publikování runbooku ho spusťte a naimportujte balíček. Podrobnosti o spuštění runbooku najdete v tématu Spuštění runbooku v Azure Automation.

Skript (import_py3package_from_pypi.py) vyžaduje následující parametry.

Parametr Popis
subscription_id ID předplatného účtu Automation
resource_group Název skupiny prostředků, ve které je účet Automation definovaný
automation_account Název účtu služby Automation
module_name Název modulu, ze který se má importovat pypi.org
module_version Verze modulu

Hodnota parametru by měla být zadaná jako jeden řetězec v následujícím formátu:

-s <subscription_id> -g <resource_group> -a<automation_account> -m <module_name> -v <module_version>

Další informace o použití parametrů s runbooky naleznete v tématu Práce s parametry sady Runbook.

Použití balíčku v runbooku

Při importu balíčku ho můžete použít v runbooku. Přidejte následující kód, který zobrazí seznam všech skupin prostředků v předplatném 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)

Poznámka:

Balíček Pythonu automationassets není v pypi.org k dispozici, takže není k dispozici pro import do procesu hybrid Runbook Worker pro Windows.

Identifikace dostupných balíčků v sandboxu

K výpisu výchozích nainstalovaných modulů použijte následující kód:

#!/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)

Rutiny PowerShellu pro Python 3.8

Přidání nového balíčku 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 

Výpis všech balíčků Pythonu 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 

Získání podrobností o konkrétním balíčku

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 

Odebrání balíčku Python 3.8

Remove-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja -Name sockets 

Aktualizace balíčku 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 

Další kroky

Pokud chcete připravit runbook Pythonu, přečtěte si téma Vytvoření runbooku Pythonu.