Verwalten von Python 3-Paketen in Azure Automation

In diesem Artikel wird beschrieben, wie Sie Python 3-Pakete in Azure Automation, das in der Azure-Sandboxumgebung und auf Hybrid Runbook Workern ausgeführt wird, importieren, verwalten und verwenden. Python-Pakete sollten für die erfolgreiche Auftragsausführung auf Hybrid Runbook-Worker heruntergeladen werden. Zur Vereinfachung von Runbooks können Sie Python-Pakete verwenden, um die benötigten Module zu importieren.

Informationen zum Verwalten von Python 2-Paketen finden Sie unter Verwalten von Python 2-Paketen.

Python-Standardpakete

Zur Unterstützung von Python 3.8-Runbooks im Automation-Dienst werden einige Python-Pakete standardmäßig installiert, und eine Liste dieser Pakete finden Sie hier. Die Standardversion kann außer Kraft gesetzt werden, indem die Python-Pakete in das Automation-Konto importiert werden.

Die importierte Version in Ihrem Automation-Konto wird bevorzugt. Informationen zum Importieren eines einzelnen Pakets finden Sie unter Importieren eines Pakets. Informationen zum Importieren eines Pakets mit mehreren Paketen finden Sie unter Importieren eines Pakets mit Abhängigkeiten.

Hinweis

Für Python 3.10 (Vorschau) sind keine Standardpakete installiert.

Pakete als Quelldateien

Azure Automation unterstützt nur Python-Pakete, die ausschließlich Python-Code enthalten und weder Erweiterungen noch Code in einer anderen Sprache umfassen. Die Azure Sandbox verfügt jedoch möglicherweise nicht über die erforderlichen Compiler für C/C++-Binärdateien, daher empfiehlt es sich, stattdessen wheel-Dateien zu verwenden.

Hinweis

Derzeit unterstützt Python 3.10 (Vorschau) nur Wheel-Dateien.

Der Python Package Index (PyPI) ist ein Repository mit Software für die Programmiersprache Python. Wenn Sie in PyPI ein Python 3-Paket für den Import in Ihr Automation-Konto auswählen, beachten Sie die folgenden Namensbestandteile:

Wählen Sie eine Python-Version aus:

Bestandteil des Dateinamens Beschreibung
cp38 Automation unterstützt Python 3.8 für Cloudaufträge.
amd64 Azure Sandbox-Prozesse gehören zur Windows 64-Bit-Architektur.

Beispiel:

  • Wenn Sie Pandas importieren möchten, wählen Sie eine Wheel-Datei mit einem Namen ähnlich wie pandas-1.2.3-cp38-win_amd64.whl aus.

Einige in PyPI verfügbare Python-Pakete enthalten keine wheel-Datei. Laden Sie in diesem Fall die Quelldatei (ZIP oder TAR.GZ) herunter, und generieren Sie die wheel-Datei mithilfe von pip.

Führen Sie die folgenden Schritte auf einem 64-Bit-Computer (Windows) mit Python 3.8.x und installiertem Wheel-Paket aus:

  1. Laden Sie die Quelldatei pandas-1.2.4.tar.gz herunter.
  2. Führen Sie pip mit dem folgenden Befehl aus, um die Wheel-Datei abzurufen: pip wheel --no-deps pandas-1.2.4.tar.gz.

Importieren eines Pakets

  1. Wählen Sie in Ihrem Azure Automation-Konto unter Python-Pakete die Option Freigegebene Ressourcen aus. Wählen Sie + Python-Paket hinzufügen aus.

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

  2. Wählen Sie auf der Seite Python-Paket hinzufügen ein lokales Paket für den Upload aus. Das Paket kann eine WHL- oder TAR.GZ-Datei für Python 3.8 und eine WHL-Datei für Python 3.10 (Vorschau) sein.

  3. Geben Sie einen Namen ein, und wählen Sie für die Runtimeversion entsprechend Python 3.8. oder Python 3.10 (Vorschau) aus.

    Hinweis

    Derzeit wird die Laufzeitversion von Python 3.10 (Vorschau) sowohl für Cloud- als auch für Hybridaufträge in allen öffentlichen Regionen mit Ausnahme von Australien, Mitte2, Südkorea, Süden, Schweden, Süden, Jio Indien, Mitte, Brasilien, Südosten, Indien, Mitte, Indien, Indien, Westen, VAE, Mitte und Government-Clouds unterstützt.

  4. Klicken Sie auf Importieren.

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

Nachdem ein Paket importiert wurde, wird es in Ihrem Automation-Konto auf der Seite „Python-Pakete“ aufgelistet. Um ein Paket zu entfernen, wählen Sie das Paket und dann Löschen aus.

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

Importieren eines Pakets mit Abhängigkeiten

Sie können ein Python 3.8-Paket und die zugehörigen Abhängigkeiten importieren, indem Sie das folgende Python-Skript in ein Python 3.8-Runbook importieren. Stellen Sie sicher, dass verwaltete Identität für Ihr Automation-Konto aktiviert ist und über Zugriff als Automation-Mitwirkender verfügt, um das Paket erfolgreich zu importieren.

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

Importieren des Skripts in ein Runbook

Informationen zum Importieren des Runbooks finden Sie unter Importieren eines Runbooks im Azure-Portal. Kopieren Sie die Datei aus GitHub an einen Speicherort, auf den das Portal zugreifen kann, bevor Sie den Import ausführen.

Hinweis

Derzeit wird das Importieren eines Runbooks aus dem Azure-Portal für Python 3.10 (Vorschau) nicht unterstützt.

Auf der Seite zum Importieren eines Runbooks wird als Name des Runbooks standardmäßig der Name des Skripts verwendet. Wenn Sie Zugriff auf das Feld haben, können Sie den Namen ändern. Der Runbooktyp ist möglicherweise standardmäßig auf Python 2.7 festgelegt. Falls ja, ändern Sie ihn in Python 3.8.

Screenshot shows the Python 3 runbook import page.

Ausführen des Runbooks zum Importieren des Pakets und der Abhängigkeiten

Nachdem Sie das Runbook erstellt und veröffentlicht haben, können Sie es ausführen, um das Paket zu importieren. Ausführliche Informationen zum Ausführen des Runbooks finden Sie unter Starten eines Runbooks in Azure Automation.

Für das Skript import_py3package_from_pypi.py sind folgende Parameter erforderlich:

Parameter BESCHREIBUNG
subscription_id Abonnement-ID des Automation-Kontos
resource_group Name der Ressourcengruppe, in der das Automation-Konto definiert ist
automation_account Name des Automation-Kontos
module_name Name des Moduls für den Import aus pypi.org
module_version Version des Moduls

Der Parameterwert sollte als einzelne Zeichenfolge im folgenden Format bereitgestellt werden:

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

Weitere Informationen zur Verwendung von Parametern mit Runbooks finden Sie unter Verwenden von Runbookparametern.

Verwenden eines Pakets in einem Runbook

Nachdem Sie das Paket importiert haben, können Sie es in einem Runbook verwenden. Fügen Sie den folgenden Code hinzu, um alle Ressourcengruppen in einem Azure-Abonnement aufzulisten.

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

Hinweis

Da das Python-Paket automationassets auf „pypi.org“ nicht verfügbar ist, kann es nicht auf einen hybriden Runbook Worker importiert werden.

Identifizieren verfügbarer Pakete in der Sandbox

Verwenden Sie den folgenden Code, um die installierten Standardmodule aufzulisten:

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

Hinzufügen eines neuen Python 3.8-Pakets

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 

Auflisten aller Python 3.8-Pakete

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 

Abrufen von Details zu einem bestimmten Paket

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 

Entfernen des Python 3.8-Pakets

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

Aktualisieren des Python 3.8-Pakets

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 

Nächste Schritte

Informationen zum Vorbereiten eines Python-Runbooks finden Sie unter Tutorial: Erstellen eines Python-Runbooks.