Sdílet prostřednictvím


Správa balíčků Pythonu 3 ve službě 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.

Note

Python 2.7 a Python 3.8 už nejsou podporovány nadřazenou platformou Python. Doporučujeme vytvářet runbooky jenom v Pythonu 3.10.

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.

Note

Pro Python 3.10 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 .

Note

Python 3.10 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ázvu souboru Description
cp310 Automatizace podporuje Python 3.10 pro cloudové úlohy.
manylinux_x86_64 Procesy sandboxu Azure jsou 64bitové architektury založené na Linuxu pro runbooky Python 3.10.

Například:

  • Pro import pandas – vyberte soubor ve formátu Wheel, který má podobný název jako pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.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 Linuxem s nainstalovaným pythonem 3.10.x a balíčkem kola proveďte následující kroky:

  1. Stažení zdrojového souboru pandas-1.2.4.tar.gz.
  2. Spusťte pip a získejte wheel soubor pomocí následujícího příkazu: pip wheel --no-deps pandas-1.2.4.tar.gz

Import balíčku

Chcete-li importovat balíček, postupujte takto:

  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 soubor Python 3.8 a .whl pro Python 3.10.

  3. Zadejte název a vyberte verzi modulu runtime jako Python 3.8 nebo Python 3.10.

  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.

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ím runbooku importujte balíček a závislosti.

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.

Parameter Description
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

Po 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)

Note

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.