Share via


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 Omschrijving
cp38 Automation ondersteunt Python 3.8 voor cloudtaken.
amd64 Azure-sandboxprocessen zijn windows 64-bits architectuur.

Bijvoorbeeld:

  • 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 het bronbestand (.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:

  1. Download het bronbestand pandas-1.2.4.tar.gz.
  2. 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

  1. Selecteer Python-pakketten onder Gedeelde resources in uw Automation-account. Selecteer vervolgens + Een Python-pakket toevoegen.

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

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

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

  4. Selecteer Importeren.

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

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.

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

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.

Screenshot shows the Python 3 runbook import page.

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.