Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article décrit comment importer, gérer et utiliser des packages Python 3 dans Azure Automation exécuté sur l’environnement sandbox Azure et Hybrid Runbook Workers. Les packages Python doivent être téléchargés sur des Runbook Workers hybrides pour une exécution réussie des travaux. Vous pouvez simplifier les runbooks en utilisant des packages Python pour importer les modules dont vous avez besoin.
Pour plus d’informations sur la gestion des packages Python 2, consultez Gérer les packages Python 2.
Remarque
Python 2.7 et Python 3.8 ne sont plus pris en charge par la plateforme parente Python. Nous vous recommandons de créer des runbooks en Python 3.10 uniquement.
Packages Python par défaut
Pour prendre en charge les runbooks Python 3.8 dans le service Automation, certains packages Python sont installés par défaut et une liste de ces packages se trouve ici. La version par défaut peut être remplacée en important des packages Python dans votre compte Automation.
La préférence est donnée à la version importée dans le compte Automation. Pour importer un package unique, consultez Importer un package. Pour importer un package avec plusieurs packages, consultez Importer un package avec des dépendances.
Remarque
Aucun package par défaut n’est installé pour Python 3.10.
Packages en tant que fichiers sources
Azure Automation prend en charge uniquement un package Python qui contient uniquement du code Python et qui n’inclut pas des extensions dans d’autres langages ou du code dans d’autres langages. Toutefois, il est possible que l’environnement de bac à sable Azure ne soit pas doté des compilateurs requis pour les fichiers binaires C/C++. Nous vous recommandons donc d’utiliser à la place des fichiers wheel.
Remarque
Actuellement, Python 3.10 prend uniquement en charge les fichiers wheel.
Python Package Index (PyPI) est un référentiel de logiciels pour le langage de programmation Python. Lorsque vous sélectionnez un package Python 3 à importer dans votre compte Automation à partir de PyPI, notez les parties suivantes du nom de fichier :
Sélectionnez une version de Python :
| Partie du nom de fichier | Description |
|---|---|
| cp310 | Automation prend en charge Python 3.10 pour les travaux cloud. |
| manylinux_x86_64 | Les processus de bac à sable Azure reposent sur une architecture 64 bits basée sur Linux, destinée aux runbooks Python 3.10. |
Par exemple :
- Pour importer pandas - sélectionnez un fichier wheel avec un nom similaire à
pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Certains packages Python disponibles sur PyPI ne fournissent pas de fichier wheel. Dans ce cas, téléchargez le fichier source (.zip ou .tar.gz), puis générez le fichier wheel en utilisant pip.
Suivez cette procédure en utilisant un ordinateur Linux 64 bits avec Python 3.10. x et le package wheel installé :
- Téléchargez le fichier source
pandas-1.2.4.tar.gz. - Exécutez pip pour récupérer le fichier wheel avec la commande suivante :
pip wheel --no-deps pandas-1.2.4.tar.gz
Importer un package
Pour importer un package, procédez comme suit :
Dans votre compte Automation, sélectionnez Packages Python sous Ressources partagées. Puis sélectionnez + Add a Python package (Ajouter un package Python).
Dans la page Ajouter un package Python, sélectionnez un package local à charger. Le package peut être .whl ou .tar.gz fichier pour le fichier Python 3.8 et .whl pour Python 3.10.
Entrez un nom et sélectionnez la version du runtime en tant que Python 3.8 ou Python 3.10.
Cliquez sur Importer.
Dès qu’un package est importé, il est listé dans la page des packages Python de votre compte Automation. Pour supprimer un package, sélectionnez-le, puis cliquez sur Supprimer.
Importer un package avec des dépendances
Vous pouvez importer un package Python 3.8 et ses dépendances en important le script Python suivant dans un runbook Python 3.8. Vérifiez que l’identité managée est activée pour votre compte Automation et dispose d’un accès contributeur Automation pour une importation réussie du package.
https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py
Importer le script dans un runbook
Pour plus d’informations sur l’importation des runbooks, consultez Importer un runbook à partir du Portail Azure. Copiez le fichier à partir de GitHub vers le stockage auquel le portail peut accéder avant d’exécuter l’importation.
La page Importer un runbook donne par défaut un nom au runbook pour qu’il corresponde à celui du script. Si vous avez accès au champ, vous pouvez modifier le nom. Le type de runbook peut par défaut être Python 2.7. Si c’est le cas, veillez à le remplacer par Python 3.8.
Exécuter le runbook pour importer le package et les dépendances
Après avoir créé et publié le runbook, exécutez-le pour importer le package. Pour plus d’informations sur l’exécution du runbook, consultez Démarrer un runbook dans Azure Automation.
Le script (import_py3package_from_pypi.py) requiert les paramètres suivants.
| Paramètre | Description |
|---|---|
| identifiant_d'abonnement | ID d’abonnement du compte Automation |
| groupe de ressources | Nom du groupe de ressources dans lequel est défini le compte Automation |
| automation_account | Nom du compte Automation |
| module_name | Nom du module à importer de pypi.org |
| module_version | Version du module |
La valeur du paramètre doit être fournie sous forme d’une chaîne unique au format ci-dessous :
-s <subscription_id> -g <resource_group> -a<automation_account> -m <module_name> -v <module_version>
Pour plus d’informations sur l’utilisation des paramètres avec runbooks, consultez Utiliser les paramètres runbook.
Utiliser un package dans un runbook
Une fois le package importé, vous pouvez l’utiliser dans un runbook. Ajoutez le code suivant pour lister tous les groupes de ressources dans un abonnement 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)
Remarque
Étant donné que le package automationassets Python n'est pas disponible sur pypi.org, il ne peut pas être importé sur un runbook worker hybride Windows.
Identifier les packages disponibles dans le bac à sable
Utilisez le code suivant pour répertorier les modules installés par défaut :
#!/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)
Cmdlets PowerShell pour Python 3.8
Ajouter un nouveau package 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
Répertorier tous les packages 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
Obtenir des détails sur un package spécifique
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
Supprimer le package Python 3.8
Remove-AzAutomationPython3Package -AutomationAccountName tarademo -ResourceGroupName mahja -Name sockets
Mettre à jour le package 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
Étapes suivantes
Pour préparer un runbook Python, consultez Créer un runbook Python.