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:
- Laden Sie die Quelldatei
pandas-1.2.4.tar.gz
herunter. - 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
Wählen Sie in Ihrem Azure Automation-Konto unter Python-Pakete die Option Freigegebene Ressourcen aus. Wählen Sie + Python-Paket hinzufügen aus.
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.
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.
Klicken Sie auf Importieren.
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.
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.
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.