إدارة حزم Python 3 في Azure Automation

توضح هذه المقالة كيفية استيراد وإدارة واستخدام حزم Python 3 في Azure Automation التي تعمل على بيئة الاختبار المعزولة ل Azure وعمال دفتر التشغيل المختلط. يجب تنزيل حزم Python على عمال دفتر التشغيل المختلط لتنفيذ المهمة بنجاح. للمساعدة في تبسيط دفاتر التشغيل، يمكنك استخدام حزم Python لاستيراد الوحدات التي تحتاجها.

للحصول على معلومات حول إدارة حزم Python 2، راجع إدارة حزم Python 2.

حزم Python الافتراضية

لدعم دفاتر تشغيل Python 3.8 في خدمة التنفيذ التلقائي، يتم تثبيت بعض حزم Python بشكل افتراضي وقائمة بهذه الحزم هنا. يمكن تجاوز الإصدار الافتراضي باستيراد حزم Python إلى حساب التنفيذ التلقائي الخاص بك.

يتم إعطاء الأفضلية إلى الإصدار المستورد في حساب التنفيذ التلقائي الخاص بك. لاستيراد حزمة واحدة، راجع استيراد حزمة. لاستيراد حزمة مع حزم متعددة، راجع استيراد حزمة مع تبعيات.

إشعار

لا توجد حزم افتراضية مثبتة ل Python 3.10 (معاينة).

الحزم كملفات مصدر

تدعم Azure Automation حزمة Python التي تحتوي فقط على رمز Python ولا تتضمن ملحقات لغة أخرى أو تعليمات برمجية بلغات أخرى. ومع ذلك، قد لا تحتوي بيئة Azure Sandbox على المحولات البرمجية المطلوبة لثنائيات C/C++، لذلك يوصى باستخدام ملفات العجلة بدلا من ذلك.

إشعار

حاليا، يدعم Python 3.10 (معاينة) ملفات العجلة فقط.

فهرس حزمة Python (PyPI) هو مستودع للبرامج للغة برمجة Python. عند تحديد حزمة Python 3 لاستيرادها إلى حساب التنفيذ التلقائي الخاص بك من PyPI، لاحظ أجزاء اسم الملف التالية:

حدد إصدار Python:

جزء اسم الملف ‏‏الوصف
cp38 يدعم التنفيذ التلقائي Python 3.8 لوظائف السحابة.
amd64 عمليات بيئة الاختبار المعزولة في Azure هي بنية Windows 64 بت .

على سبيل المثال:

  • لاستيراد pandas - حدد ملف عجلة باسم مشابه ل pandas-1.2.3-cp38-win_amd64.whl.

لا توفر بعض حزم Python المتوفرة على PyPI ملف عجلة. في هذه الحالة، قم بتنزيل المصدر (ملف .zip أو ملف .tar.gz) وقم بإنشاء ملف العجلة باستخدام pip.

نفذ الخطوات التالية باستخدام جهاز Windows 64 بت مع تثبيت Python 3.8.x وحزمة العجلة:

  1. قم بتنزيل الملف pandas-1.2.4.tar.gzالمصدر .
  2. شغل pip للحصول على ملف العجلة باستخدام الأمر التالي: pip wheel --no-deps pandas-1.2.4.tar.gz

قم باستيراد حزمة

  1. في حساب Automation الخاص بك، حدد حزم Python ضمن الموارد المشتركة. ثم حدد + إضافة حزمة Python.

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

  2. في صفحة إضافة حزمة Python، حدد حزمة محلية لتحميلها. يمكن أن تكون الحزمة ملف .whl أو .tar.gz لملف Python 3.8 و.whlل Python 3.10 (معاينة).

  3. أدخل اسما وحدد إصدار وقت التشغيل ك Python 3.8 أو Python 3.10 (معاينة).

    إشعار

    حاليا، يتم دعم إصدار وقت تشغيل Python 3.10 (معاينة) لكل من السحابة والوظائف المختلطة في جميع المناطق العامة باستثناء أستراليا الوسطى 2 وكوريا الجنوبية والسويد الجنوبية وJio India Central وجنوب شرق البرازيل ووسط الهند وغرب الهند والإمارات العربية المتحدة الوسطى وسحب Gov.

  4. حدد استيراد.

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

بعد استيراد حزمة، يتم سردها في صفحة حزم Python في حساب Automation الخاص بك. لإزالة حزمة، حدد الحزمة وحدد حذف.

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

استيراد حزمة ذات تبعيات

يمكنك استيراد حزمة Python 3.8 وتبعياتها عن طريق استيراد البرنامج النصي Python التالي إلى دفتر تشغيل Python 3.8. تأكد من تمكين الهوية المدارة لحساب التنفيذ التلقائي الخاص بك ولديها حق الوصول إلى "مساهم التنفيذ التلقائي" لاستيراد الحزمة بنجاح.

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

استيراد البرنامج النصي إلى دفتر تشغيل

للحصول على معلومات حول استيراد دفتر التشغيل، راجع استيراد دفتر تشغيل من مدخل Microsoft Azure. انسخ الملف من GitHub إلى التخزين الذي يمكن وصول المدخل إليه قبل تشغيل الاستيراد.

إشعار

حاليا، استيراد دفتر تشغيل من مدخل Microsoft Azure غير مدعوم ل Python 3.10 (معاينة).

تقوم صفحة Import a runbook افتراضيا بمطابقة اسم دفتر التشغيل مع اسم البرنامج النصي. إذا كان لديك حق الوصول إلى الحقل، فإنه يمكنك تغيير الاسم. قد يكون نوع دفتر التشغيل افتراضيا إلى Python 2.7. إذا كان الأمر كذلك، فتأكد من تغييره إلى Python 3.8.

Screenshot shows the Python 3 runbook import page.

تنفيذ دفتر التشغيل لاستيراد الحزمة وتبعياتها

بعد إنشاء دفتر التشغيل ونشره، قم بتشغيله لاستيراد الحزمة. راجع بدء تشغيل دفتر تشغيل في Azure Automation للحصول على تفاصيل حول تنفيذ دفتر التشغيل.

يتطلب البرنامج النصي (import_py3package_from_pypi.py) المعلمات التالية.

المعلمة ‏‏الوصف‬
subscription_id معرّف الاشتراك لحساب التنفيذ التلقائي
مجموعة الموارد اسم مجموعة الموارد التي تم تعريف حساب التنفيذ التلقائي في
الحساب_التلقائي اسم الحساب التلقائي
اسم_الوحدة النمطية اسم الوحدة النمطية المراد الاستيراد منها pypi.org
module_version إصدار الوحدة النمطية

يجب توفير قيمة المعلمة كسلسلة واحدة بالتنسيق أدناه:

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

لمزيد من المعلومات حول استخدام المعلمات مع دفاتر التشغيل، راجع العمل مع معلمات دفتر التشغيل.

استخدام حزمة في دفتر تشغيل

مع الحزمة المستوردة، يمكنك استخدامها في دفتر التشغيل. أضف التعليمات البرمجية التالية لسرد كافة مجموعات الموارد في اشتراك 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)

إشعار

لا تتوفر حزمة Python automationassets في pypi.org، لذلك فهي غير متوفرة للاستيراد إلى عامل دفتر تشغيل مختلط يعمل بنظام Windows.

تحديد الحزم المتوفرة في بيئة الاختبار المعزولة

استخدم التعليمات البرمجية التالية لسرد الوحدات النمطية المثبتة الافتراضية:

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

إضافة حزمة 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 

سرد جميع حزم 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 

الحصول على تفاصيل حول حزمة معينة

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

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

تحديث حزمة 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 

الخطوات التالية

لإعداد دفتر تشغيل Python، راجع إنشاء دفتر تشغيل Python.