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. |
Na 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:
- Pobierz plik
pandas-1.2.4.tar.gz
źródłowy . - Uruchom narzędzie, aby pobrać plik wheel za pomocą następującego polecenia:
pip wheel --no-deps pandas-1.2.4.tar.gz
Importowanie pakietu
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.
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).
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.
Wybierz Importuj.
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ń.
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.
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.