Zarządzaj pakietami języka Python 3 w usłudze Azure Automation

W tym artykule opisano sposób importowania i używania pakietów języka Python 3 w usłudze Azure Automation działających w środowisku piaskownicy platformy Azure i hybrydowych procesów roboczych elementów Runbook oraz zarządzania nimi. Pakiety języka Python należy pobrać dla hybrydowych procesów roboczych elementów Runbook, aby wykonać zadanie z powodzeniem. Aby uprościć elementy Runbook, możesz użyć pakietów języka Python do zaimportowania potrzebnych modułów.

Aby uzyskać informacje na temat zarządzania pakietami języka Python 2, zobacz Zarządzanie pakietami języka Python 2.

Domyślne pakiety języka Python

Aby zapewnić obsługę elementów Runbook języka Python 3.8 w usłudze Automation, niektóre pakiety języka Python są instalowane domyślnie, a lista tych pakietów znajduje się tutaj. Wersję domyślną można zastąpić, importując pakiety języka Python na konto usługi Automation.

Preferowana jest wersja zaimportowana na Twoim koncie usługi Automation. Aby zaimportować pojedynczy pakiet, zobacz Importowanie pakietu. Aby zaimportować pakiet z wieloma pakietami, zobacz Importowanie pakietu z zależnościami.

Uwaga

Brak zainstalowanych pakietów domyślnych dla języka Python 3.10 (wersja zapoznawcza).

Pakiety jako pliki źródłowe

Usługa Azure Automation obsługuje tylko pakiet języka Python, który zawiera tylko kod języka Python i nie zawiera innych rozszerzeń języka ani kodu w innych językach. Jednak środowisko piaskownicy platformy Azure może nie mieć wymaganych kompilatorów dla plików binarnych C/C++, dlatego zaleca się użycie plików wheel.

Uwaga

Obecnie język Python 3.10 (wersja zapoznawcza) obsługuje tylko pliki wheel.

Python Package Index (PyPI) to repozytorium oprogramowania dla języka programowania Python. Podczas wybierania pakietu języka Python 3 do zaimportowania na konto usługi Automation z PyPI zwróć uwagę na następujące części nazwy pliku:

Wybierz wersję języka Python:

Część nazwy pliku opis
cp38 Usługa Automation obsługuje zadania języka Python 3.8 dla chmury.
amd64 Procesy piaskownicy platformy Azure to architektura 64-bitowa systemu Windows.

Przykład:

  • Aby zaimportować bibliotekę pandas — wybierz plik wheel o nazwie podobnej do pandas-1.2.3-cp38-win_amd64.whl.

Niektóre pakiety języka Python dostępne w interfejsie PyPI nie udostępniają pliku wheel. W takim przypadku pobierz źródło (plik zip lub tar.gz) i wygeneruj plik wheel przy użyciu polecenia pip.

Wykonaj następujące kroki, korzystając z 64-bitowej maszyny z systemem Windows z zainstalowanym pakietem Python 3.8.x i wheel:

  1. Pobierz plik pandas-1.2.4.tar.gzźródłowy .
  2. Uruchom narzędzie pip, aby pobrać plik wheel za pomocą następującego polecenia: pip wheel --no-deps pandas-1.2.4.tar.gz

Importowanie pakietu

  1. Na swoim koncie usługi Automation wybierz pozycję Pakiety języka Python w obszarze Zasoby współdzielone. Następnie wybierz pozycję +Dodaj pakiet języka Python.

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

  2. Na stronie Dodaj pakiet języka Python wybierz pakiet lokalny do przekazania. Pakiet może być plikiem .whl lub tar.gz dla języka Python 3.8 i plikiem .whl dla języka Python 3.10 (wersja zapoznawcza).

  3. Wprowadź nazwę i wybierz pozycję Wersja środowiska uruchomieniowego jako język Python 3.8 lub Python 3.10 (wersja zapoznawcza).

    Uwaga

    Obecnie wersja środowiska uruchomieniowego języka Python 3.10 (wersja zapoznawcza) jest obsługiwana zarówno w przypadku zadań chmurowych, jak i hybrydowych we wszystkich regionach publicznych, z wyjątkiem Australii Środkowej2, Korei Południowej, Szwecji Południowej, Jio India Środkowego, Brazylii Południowo-Wschodniej, Indii Zachodnich, Środkowych Stanów Zjednoczonych i Chmur gov.

  4. Wybierz pozycję Importuj.

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

Po zaimportowaniu pakietu jest on wyświetlany na stronie pakietów języka Python na Twoim koncie usługi Automation. Aby usunąć pakiet, wybierz pakiet i wybierz pozycję Usuń.

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

Importowanie pakietu z zależnościami

Możesz zaimportować pakiet języka Python 3.8 i jego zależności, importując następujący skrypt języka Python do elementu Runbook języka Python 3.8. Upewnij się, że tożsamość zarządzana jest włączona dla Twojego konta usługi Automation i ma ona dostęp współautora usługi Automation, aby zaimportować pakiet z powodzeniem.

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

Importowanie skryptu do elementu Runbook

Aby uzyskać informacje na temat importowania elementu Runbook, zobacz Importuj element Runbook z witryny Azure Portal. Skopiuj plik z serwisu GitHub do magazynu, do którego portal ma dostęp przed uruchomieniem importu.

Uwaga

Obecnie importowanie elementu Runbook z witryny Azure Portal nie jest obsługiwane w przypadku języka Python 3.10 (wersja zapoznawcza).

Na stronie Importuj element Runbook domyślna nazwa elementu Runbook jest zgodna z nazwą skryptu. Jeśli masz dostęp do pola, możesz zmienić nazwę. Typ elementu Runbook może domyślnie mieć wartość Python 2.7. Jeśli tak, pamiętaj, aby zmienić tę opcję na wartość Python 3.8.

Screenshot shows the Python 3 runbook import page.

Wykonywanie elementu Runbook w celu zaimportowania pakietu i zależności

Po utworzeniu i opublikowaniu elementu Runbook uruchom go, aby zaimportować pakiet. Aby uzyskać szczegółowe informacje na temat wykonywania elementu Runbook, zobacz Uruchom element Runbook w usłudze Azure Automation.

Skrypt (import_py3package_from_pypi.py) wymaga następujących parametrów.

Parametr Opis
subscription_id Identyfikator subskrypcji konta usługi Automation
resource_group Nazwa grupy zasobów, w której jest zdefiniowane konto usługi Automation
automation_account Nazwa konta usługi Automation
module_name Nazwa modułu do zaimportowania z pypi.org
module_version Wersja modułu

Wartość parametru powinna być podana jako pojedynczy ciąg znaków w poniższym formacie:

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

Aby uzyskać więcej informacji na temat używania parametrów z elementami Runbook, zobacz Praca z parametrami elementu Runbook.

Używanie pakietu w elemecie Runbook

Zaimportowany pakiet umożliwia użycie go w elemecie Runbook. Dodaj następujący kod, aby wyświetlić listę wszystkich grup zasobów w subskrypcji platformy 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)

Uwaga

Pakiet języka Python automationassets nie jest dostępny w pypi.org, więc nie jest dostępny do zaimportowania do hybrydowego procesu roboczego elementu Runbook systemu Windows.

Identyfikowanie dostępnych pakietów w piaskownicy

Użyj następującego kodu, aby wyświetlić listę domyślnych zainstalowanych modułów:

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

Polecenia cmdlet programu PowerShell w języku Python 3.8

Dodawanie nowego pakietu języka 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 

Wyświetlanie listy wszystkich pakietów języka Python 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 

Uzyskiwanie szczegółowych informacji o określonym pakiecie

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 

Usuwanie pakietu języka Python 3.8

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

Aktualizowanie pakietu języka 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 

Następne kroki

Aby przygotować element Runbook języka Python, zobacz Tworzenie elementu Runbook języka Python.