Python 3-pakketten beheren in Azure Automation
In dit artikel wordt beschreven hoe u Python 3-pakketten importeert, beheert en gebruikt in Azure Automation die wordt uitgevoerd in de Azure-sandboxomgeving en Hybrid Runbook Workers. Python-pakketten moeten worden gedownload op Hybrid Runbook Workers om taken succesvol te kunnen uitvoeren. Om runbooks te vereenvoudigen, kunt u Python-pakketten gebruiken om de modules te importeren die u nodig hebt.
Zie Python 2-pakketten beheren voor meer informatie over het beheren van Python 2-pakketten.
Standaard Python-pakketten
Ter ondersteuning van Python 3.8-runbooks in de Automation-service worden sommige Python-pakketten standaard geïnstalleerd en vindt u hier een lijst met deze pakketten. De standaardversie kan worden overschreven door Python-pakketten te importeren in uw Automation-account.
De voorkeur wordt gegeven aan de geïmporteerde versie in uw Automation-account. Zie Een pakket importeren als u één pakket wilt importeren. Als u een pakket met meerdere pakketten wilt importeren, raadpleegt u Een pakket importeren met afhankelijkheden.
Notitie
Er zijn geen standaardpakketten geïnstalleerd voor Python 3.10 (preview).
Pakketten als bronbestanden
Azure Automation ondersteunt alleen een Python-pakket dat alleen Python-code bevat en geen andere taalextensies of code in andere talen bevat. De Azure Sandbox-omgeving heeft mogelijk echter niet de vereiste compilers voor binaire C/C++-bestanden, dus het is raadzaam om in plaats daarvan wheel-bestanden te gebruiken.
Notitie
Momenteel ondersteunt Python 3.10 (preview) alleen wielbestanden.
De Python Package Index (PyPI) is een opslagplaats met software voor de Python-programmeertaal. Wanneer u een Python 3-pakket selecteert dat u wilt importeren in uw Automation-account vanuit PyPI, moet u rekening houden met de volgende bestandsnamen:
Selecteer een Python-versie:
Bestandsnaamonderdeel | Beschrijving |
---|---|
cp38 | Automation ondersteunt Python 3.8 voor cloudtaken. |
amd64 | Azure-sandboxprocessen zijn windows 64-bits architectuur. |
Voorbeeld:
- Als u pandas wilt importeren, selecteert u een wielbestand met een naam die vergelijkbaar is met
pandas-1.2.3-cp38-win_amd64.whl
.
Sommige Python-pakketten die beschikbaar zijn op PyPI bieden geen wielbestand. In dit geval downloadt u de bron (.zip of .tar.gz bestand) en genereert u het wielbestand met behulp van pip
.
Voer de volgende stappen uit met behulp van een 64-bits Windows-computer waarop Python 3.8.x en het wielpakket zijn geïnstalleerd:
- Download het bronbestand
pandas-1.2.4.tar.gz
. - Voer pip uit om het wielbestand op te halen met de volgende opdracht:
pip wheel --no-deps pandas-1.2.4.tar.gz
Een pakket importeren
Selecteer Python-pakketten onder Gedeelde resources in uw Automation-account. Selecteer vervolgens + Een Python-pakket toevoegen.
Selecteer op de pagina Python-pakket toevoegen een lokaal pakket om te uploaden. Het pakket kan een .whl- of .tar.gz-bestand voor Python 3.8 en een .whl-bestand voor Python 3.10 (preview) zijn.
Voer een naam in en selecteer de Runtime-versie als Python 3.8 of Python 3.10 (preview).
Notitie
Momenteel wordt runtimeversie van Python 3.10 (preview) ondersteund voor cloud- en hybride taken in alle openbare regio's, behalve Australië - centraal2, Korea - zuid, Zweden - zuid, Jio India - centraal, Brazilië - zuidoost, India - centraal, India - west, UAE - centraal en Gov-clouds.
Selecteer Importeren.
Nadat een pakket is geïmporteerd, wordt het weergegeven op de pagina Python-pakketten in uw Automation-account. Om een pakket te verwijderen, selecteert u het pakket en selecteert u Verwijderen.
Een pakket met afhankelijkheden importeren
U kunt een Python 3.8-pakket en de bijbehorende afhankelijkheden importeren door het volgende Python-script te importeren in een Python 3.8-runbook. Zorg ervoor dat Beheerde identiteit is ingeschakeld voor uw Automation-account en toegang als Automation-inzender heeft voor een geslaagde import van het pakket.
https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py
Het script importeren in een runbook
Zie Een runbook importeren uit de Azure-portal voor meer informatie over het importeren van het runbook. Kopieer het bestand van GitHub naar de opslag waartoe de portal toegang heeft voordat u de import uitvoert.
Notitie
Het importeren van een runbook vanuit Azure Portal wordt momenteel niet ondersteund voor Python 3.10 (preview).
Op de pagina Een runbook importeren wordt de naam van het runbook standaard aangepast aan de naam van het script. Als u toegang tot het veld hebt, kunt u de naam wijzigen. Runbooktype is mogelijk standaard ingesteld op Python 2.7. Als dit het geval is, moet u het wijzigen in Python 3.8.
Het runbook uitvoeren om het pakket en de afhankelijkheden te importeren
Nadat u het runbook hebt gemaakt en gepubliceerd, voert u het uit om het pakket te importeren. Zie Een runbook starten in Azure Automation voor meer informatie over het uitvoeren van het runbook.
Voor het script (import_py3package_from_pypi.py
) zijn de volgende parameters vereist.
Parameter | Beschrijving |
---|---|
subscription_id | Abonnements-id van het Automation-account |
resource_group | Naam van de resourcegroep waarin het Automation-account is gedefinieerd |
automation_account | Naam van Automation-account |
module_name | Naam van de module waaruit moet worden geïmporteerd pypi.org |
module_version | Versie van de module |
Parameterwaarde moet worden opgegeven als één tekenreeks in de onderstaande indeling:
-s <subscription_id> -g <resource_group> -a<automation_account> -m <module_name> -v <module_version>
Zie Werken met runbookparameters voor meer informatie over het gebruik van parameters met runbooks.
Een pakket gebruiken in een runbook
Als het pakket is geïmporteerd, kunt u het gebruiken in een runbook. Voeg de volgende code toe om alle resourcegroepen in een Azure-abonnement weer te geven.
#!/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)
Notitie
Het Python-pakket automationassets
is niet beschikbaar op pypi.org, dus het is niet beschikbaar voor importeren in een Hybrid Runbook Worker van Windows.
Beschikbare pakketten identificeren in sandbox
Gebruik de volgende code om de standaard geïnstalleerde modules weer te geven:
#!/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-cmdlets
Nieuw Python 3.8-pakket toevoegen
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
Alle Python 3.8-pakketten weergeven
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
Details over een specifiek pakket verkrijgen
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
Python 3.8-pakket verwijderen
Remove-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name sockets
Python 3.8-pakket bijwerken
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
Volgende stappen
Zie Een Python-runbook maken om een Python-runbook voor te bereiden.