Megosztás a következőn keresztül:


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.

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 (előzetes verzió) nincsenek telepítve alapértelmezett csomagok.

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 (előzetes verzió) jelenleg csak a kerekes fá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
cp38 Az Automation támogatja a Python 3.8 for Cloud-feladatokat.
amd64 Az Azure-tesztkörnyezeti folyamatok Windows 64 bites architektúrák.

Példa:

  • Pandas importálásához válasszon ki egy hasonló nevű pandas-1.2.3-cp38-win_amd64.whlkerekes fájlt.

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

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

  1. Töltse le a forrásfájlt 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

  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 (előzetes verzió).

  3. Adjon meg egy nevet, és a Futtatókörnyezet-verzió lehetőségnél válassza a Python 3.8 vagy a Python 3.10 (előzetes verzió) értéket.

    Feljegyzés

    A Python 3.10 -es (előzetes verziójú) futtatókörnyezet verziója jelenleg a felhőbeli és a hibrid feladatok esetében is támogatott az összes nyilvános régióban, kivéve Ausztrália középső régiójában, Dél-Koreában, Dél-Svédországban, Jio India középső régiójában, Délkelet-Brazíliában, Közép-Indiában, Nyugat-Indiában, az Egyesült Arab Emírségek középső régiójában és a Gov-felhőkben.

  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 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.

Feljegyzés

A Python 3.10 (előzetes verzió) esetében jelenleg nem támogatott runbook importálása az Azure Portalról.

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. Ebben az esetben módosítsa az értéket Python 3.8-ra.

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

A runbook végrehajtása a csomag és a függőségek importálásához

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
subscription_id Az Automation-fiók előfizetés-azonosítója
resource_group Annak az erőforráscsoportnak a neve, amelyben az Automation-fiók definiálva van
automation_account Automation-fiók neve
module_name A modul neve, amelyből importálni szeretné pypi.org
module_version 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

Az importált csomag egy runbookban is használható. 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-csomag automationassets nem érhető el pypi.org, ezért nem importálható hibrid Windows-runbook-feldolgozóba.

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-parancsmagok

Ú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.