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:
- Stáhněte si zdrojový soubor
pandas-1.2.4.tar.gz
. - 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
Na svém účtu Automation vyberte Balíčky Pythonu v části Sdílené prostředky. Pak vyberte + Přidat balíček Pythonu.
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).
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.
Vyberte Importovat.
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.
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.
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.