Python 3-csomagok kezelése az Azure Automationben

Ez a cikk bemutatja, hogyan importálhatja, kezelheti és használhatja a Python 3-csomagokat az Azure Automationben, amely az Azure-tesztkörnyezetben és a hibrid Runbook-feldolgozókban fut. A Python-csomagokat hibrid runbook-feldolgozókra kell letölteni a sikeres feladat-végrehajtás érdekében. A runbookok egyszerűsítése érdekében Python-csomagokkal importálhatja a szükséges modulokat.

A Python 2-csomagok kezelésével kapcsolatos információkért lásd: Python 2-csomagok kezelése.

Feljegyzés

A Python 2.7-et és a Python 3.8-at a Python szülőplatformja már nem támogatja. Javasoljuk, hogy csak a Python 3.10-ben hozzon létre runbookokat.

Alapértelmezett Python-csomagok

A Python 3.8-runbookok Automation szolgáltatásban való támogatásához néhány Python-csomag alapértelmezés szerint telepítve van. Ezeknek a csomagoknak a listáját itt találja. Az alapértelmezett verzió felülbírálható, ha Python-csomagokat importál az Automation-fiókjába.

Az Automation-fiókban az importált verzió fog előnyt élvezni. Egyetlen csomag importálásához lásd : Csomag importálása. Ha több csomagot tartalmazó csomagot szeretne importálni, olvassa el a függőségekkel rendelkező csomag importálása című témakört.

Feljegyzés

A Python 3.10-hez nincsenek alapértelmezett csomagok telepítve.

Csomagok forrásfájlokként

Az Azure Automation csak olyan Python-csomagot támogat, amely csak Python-kódot tartalmaz, és nem tartalmaz más nyelvi bővítményeket vagy kódot más nyelveken. Előfordulhat azonban, hogy az Azure Sandbox-környezet nem rendelkezik a C/C++ bináris fájlokhoz szükséges fordítókkal, ezért javasoljuk, hogy inkább kerékfájlokat használjon.

Feljegyzés

A Python 3.10 jelenleg csak a kerékfájlokat támogatja.

A Python-csomagindex (PyPI) a Python programozási nyelv szoftvereinek adattára. Amikor kiválaszt egy Python 3-csomagot, amely importálható az Automation-fiókjába a PyPI-ból, jegyezze fel a következő fájlnévrészeket:

Válasszon egy Python-verziót:

Fájlnév rész Leírás
cp310 Az Automation támogatja a Python 3.10-t felhőalapú feladatokhoz.
manylinux_x86_64 Az Azure sandbox folyamatok Linux-alapú, 64 bites architektúrára épülnek a Python 3.10 runbookokhoz.

Példa:

  • Pandas importálása – válasszon ki egy whl fájlt, amelynek neve hasonló pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

A PyPI-n elérhető egyes Python csomagok nem biztosítanak wheel fájlt. Ebben az esetben töltse le a forrást (.zip vagy .tar.gz fájlt), és hozza létre a kerékfájlt pip használatával.

Hajtsa végre a következő lépéseket egy 64 bites Linux rendszerű géppel, amelyen telepítve van a Python 3.10.x és a kerékcsomag:

  1. A forrásfájl letöltése pandas-1.2.4.tar.gz.
  2. Futtassa a pipet a kerékfájl lekéréséhez a következő paranccsal: pip wheel --no-deps pandas-1.2.4.tar.gz

Csomag importálása

Csomag importálásához kövesse az alábbi lépéseket:

  1. Az Automation-fiókjában a Megosztott erőforrások területen válassza a Python-csomagok lehetőséget. Ezután válassza a + Python-csomag hozzáadása lehetőséget.

    Képernyőkép a Python-csomagok oldaláról, amelyen a Python-csomagok láthatók a bal oldali menüben, és kiemelt Python-csomag hozzáadása.

  2. A Python-csomag hozzáadása lapon válassza ki a feltöltendő helyi csomagot. A csomag lehet .whl vagy .tar.gz fájl a Python 3.8-hoz és .whl fájl a Python 3.10-hez.

  3. Adjon meg egy nevet, és válassza ki a futtatókörnyezeti verziót Python 3.8 vagy Python 3.10 néven.

  4. Válassza az Importálás lehetőséget.

    Képernyőkép a Python 3.8 Csomag hozzáadása lapról, amelyen egy feltöltött tar.gz fájl van kiválasztva.

A csomag importálása után a csomag az Automation-fiók Python-csomagok lapján fog szerepelni. Ha el szeretne távolítani egy csomagot, jelölje ki a csomagot, és válassza a Törlés gombot.

Képernyőkép a Python 3.8-csomagok oldalról a csomag importálása után.

Függőségeket tartalmazó csomag importálása

A Python 3.8-csomagokat és azok függőségeit a következő Python-szkript Python 3.8-as runbookba való importálásával importálhatja. A csomag sikeres importálása érdekében győződjön meg arról, hogy a felügyelt identitás engedélyezve van az Automation-fiókhoz, és rendelkezik Automation-közreműködői hozzáféréssel.

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

A szkript importálása a runbookba

A runbook importálásával kapcsolatos információkért lásd: Runbook importálása az Azure Portalról. Az importálás futtatása előtt másolja a fájlt a GitHubról a portál által elérhető tárolóba.

A Runbook importálása lapon a runbook neve alapértelmezés szerint a szkript nevének megfelelően lesz megadva. Ha rendelkezik hozzáféréssel a mezőhöz, módosíthatja a nevet. Lehet, hogy a Runbook típusa alapértelmezés szerint a Python 2.7 értéket kapja. Ha igen, módosítsa az értéket Python 3.8-ra.

Képernyőkép a Python 3 runbook importálási oldalról.

Futtassa a runbookot, hogy importálja a csomagot és a függőségeket.

A runbook létrehozása és közzététele után futtassa a runbookot a csomag importálásához. A runbook végrehajtásával kapcsolatos részletekért lásd: Runbook indítása az Azure Automationben.

A szkripthez (import_py3package_from_pypi.py) a következő paraméterek szükségesek.

Paraméter Leírás
előfizetési_azonosító Az Automation-fiók előfizetés-azonosítója
erőforráscsoport Annak az erőforráscsoportnak a neve, amelyben az Automation-fiók definiálva van
automatizálási_fiók Automation-fiók neve
module_name A modul neve, amelyből importálni szeretné pypi.org
modul_verzió A modul verziója

A paraméter értékét egyetlen sztringként kell megadni az alábbi formátumban:

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

A paraméterek runbookokkal való használatáról további információt a Runbook paramétereinek használata című témakörben talál.

Csomag használata runbookban

Miután importáltad a csomagot, felhasználhatod egy runbookban. Adja hozzá az alábbi kódot egy Azure-előfizetés összes erőforráscsoportjának listázásához.

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

Feljegyzés

A Python automationassets csomag nem érhető el a pypi.org weboldalon, ezért nem importálható egy Windows hibrid runbook feldolgozóra.

A tesztkörnyezetben elérhető csomagok azonosítása

Az alapértelmezett telepített modulok felsorolásához használja az alábbi kódot:

#!/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-parancsmódosítók

Új Python 3.8-csomag hozzáadása

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 

Az összes Python 3.8-csomag listázása

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 

Az adott csomag részleteinek lekérése

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-csomag eltávolítása

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

Python 3.8-csomag frissítése

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 

Következő lépések

Python-runbook előkészítéséhez lásd : Python-runbook létrehozása.