Aracılığıyla paylaş


Azure Otomasyonu'nda Python 3 paketlerini yönetme

Bu makalede, Azure sandbox ortamında ve Hybrid Runbook Workers üzerinde çalışan Azure Otomasyonunda Python 3 paketlerini içeri aktarma, yönetme ve kullanma işlemleri açıklanmaktadır. Başarılı bir iş yürütmesi için Python paketleri Karma Runbook çalışanlarına indirilmelidir. Runbook'ları basitleştirmeye yardımcı olması için, ihtiyacınız olan modülleri içeri aktarmak için Python paketlerini kullanabilirsiniz.

Python 2 paketlerini yönetme hakkında bilgi için bkz . Python 2 paketlerini yönetme.

Not

Python 2.7 ve Python 3.8 artık üst platform Python tarafından desteklenmiyor. Runbook'ları yalnızca Python 3.10'da oluşturmanızı öneririz.

Varsayılan Python paketleri

Otomasyon hizmetinde Python 3.8 runbook'larını desteklemek için, bazı Python paketleri varsayılan olarak yüklenir ve bu paketlerin listesi buradadır. Python paketleri Otomasyon hesabınıza aktarılarak varsayılan sürüm geçersiz kılınabilir.

Otomasyon hesabınızdaki içeri aktarılan sürüm tercih edilir. Tek bir paketi içeri aktarmak için bkz Paket içe aktarma. Birden çok paketi olan bir paketi içeri aktarmak için bkz Bağımlılıkları Olan Bir Paketi İçe Aktarma.

Not

Python 3.10 için yüklü varsayılan paket yoktur.

Kaynak dosya olarak paketler

Azure Otomasyonu yalnızca Python kodu içeren ve diğer dillerdeki diğer dil uzantılarını veya kodları içermeyen bir Python paketini destekler. Ancak Azure Korumalı Alan ortamında C/C++ ikili dosyaları için gerekli derleyiciler olmayabilir, bu nedenle bunun yerine tekerlek dosyalarının kullanılması önerilir.

Not

Şu anda Python 3.10 yalnızca tekerlek dosyalarını destekler.

Python Paket Dizini (PyPI), Python programlama dili için bir yazılım deposudur. PyPI'dan Otomasyon hesabınıza aktarmak için bir Python 3 paketi seçerken aşağıdaki dosya adı bölümlerini not edin:

Python sürümü seçin:

Dosya adı bölümü Açıklama
cp310 Otomasyon, Bulut işleri için Python 3.10'u destekler.
manylinux_x86_64 Azure korumalı ortam süreçleri, Python 3.10 runbook'ları için Linux tabanlı 64 bit mimariye sahiptir.

Örneğin:

  • Pandas'ı içeri aktarmak için, pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl gibi bir ada sahip wheel dosyasını seçin.

PyPI'da bulunan bazı Python paketleri tekerlek dosyası sağlamaz. Bu durumda, kaynağı indirin (.zip veya .tar.gz dosyası) ve pip kullanarak tekerlek dosyasını oluşturun.

Python 3.10.x ve tekerlek paketi yüklü bir 64 bit Linux makinesi kullanarak aşağıdaki adımları gerçekleştirin:

  1. Kaynak dosyayı indirme pandas-1.2.4.tar.gz.
  2. Aşağıdaki komutla tekerlek dosyasını almak için pip komutunu çalıştırın: pip wheel --no-deps pandas-1.2.4.tar.gz

Paketi içeri aktarma

Paketi içeri aktarmak için şu adımları izleyin:

  1. Otomasyon hesabınızda Paylaşılan Kaynaklar bölümündeki Python paketleri'ni seçin. Ardından + Python paketi ekle'yi seçin.

    Python paketleri sayfasının ekran görüntüsü, soldaki menüde Python paketlerini ve Python paketi ekle seçeneğinin vurgulanmış olduğunu gösterir.

  2. Python Paketi Ekle sayfasında karşıya yüklenecek yerel paketi seçin. Paket Python 3.8 için .whl veya .tar.gz dosyası ve Python 3.10 için .whl dosyası olabilir.

  3. Bir ad girin ve Çalışma Zamanı Sürümünü Python 3.8 veya Python 3.10 olarak seçin.

  4. İçeri aktar'ı seçin.

    Karşıya yüklenen bir tar.gz dosyasının seçili olduğu Python 3.8 Paketi Ekle sayfasını gösteren ekran görüntüsü.

Paket içeri aktarıldıktan sonra, Otomasyon hesabınızdaki Python paketleri sayfasında listelenir. Paketi kaldırmak için paketi ve ardından Sil'i seçin.

Bir paket içeri aktarıldıktan sonra Python 3.8 paketleri sayfasını gösteren ekran görüntüsü.

Bağımlılıkları olan bir paketi içeri aktarma

Aşağıdaki Python betiğini bir Python 3.8 runbook'una aktararak bir Python 3.8 paketini ve bağımlılıklarını içeri aktarabilirsiniz. Yönetilen kimliğin Otomasyon hesabınız için etkinleştirildiğinden ve paketin başarıyla içeri aktarılması için Otomasyon Katılımcısı erişimine sahip olduğundan emin olun.

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

Betiği runbook'a aktarma

Runbook'u içeri aktarma hakkında bilgi edinmek için bkz. Azure portalından bir runbook'u içeri aktarma. İçeri aktarmayı çalıştırmadan önce dosyayı GitHub'dan, portalın erişebileceği depolama alanına kopyalayın.

Runbook'u içeri aktarma sayfası, runbook adını varsayılan olarak betiğin adıyla eşleşecek şekilde kullanır. Alana erişiminiz varsa, adı değiştirebilirsiniz. Runbook türü varsayılan olarak Python 2.7 olabilir. Eğer öyleyse, Python 3.8 olarak değiştirdiğinizden emin olun.

Python 3 runbook içeri aktarma sayfasını gösteren ekran görüntüsü.

Paketi ve bağımlılıkları içeri aktarmak için runbook'u çalıştırın.

Runbook'u oluşturup yayımladıktan sonra, paketi içeri aktarmak için çalıştırın. Runbook'u yürütme hakkında ayrıntılı bilgi için Azure Otomasyonu'nda çalışma kitabı başlatma bölümüne bakın.

Betik (import_py3package_from_pypi.py), aşağıdaki parametreleri gerektirir.

Parametre Açıklama
subscription_id Otomasyon hesabının abonelik kimliği
kaynak_grubu Otomasyon hesabının tanımlandığı kaynak grubunun adı
otomasyon_hesabı Otomasyon hesabı adı
module_name İçeri aktarılacağınız modülün adı pypi.org
modül_sürümü Modülün sürümü

Parametre değeri aşağıdaki biçimde tek bir dize olarak sağlanmalıdır:

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

Runbook'larla parametreleri kullanma hakkında daha fazla bilgi için bkz Runbook parametreleriyle çalışma.

Runbook'ta paket kullanma

Paket içeri aktarıldığında, bunu bir runbook'ta kullanabilirsiniz. Azure aboneliğindeki tüm kaynak gruplarını listelemek için aşağıdaki kodu ekleyin.

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

Not

Python automationassets paketi pypi.org'da mevcut değil, bu yüzden Windows karma runbook çalışanında import edilemez.

Korumalı alanda kullanılabilir paketleri tanımlama

Varsayılan yüklü modülleri listelemek için aşağıdaki kodu kullanın:

#!/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 cmdlet'leri

Yeni Python 3.8 paketi ekleme

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 

Tüm Python 3.8 paketlerini listeleme

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 

Belirli bir paketle ilgili ayrıntıları alma

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 paketini kaldırma

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

Python 3.8 paketini güncelleştirme

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 

Sonraki adımlar

Python runbook'u hazırlamak için bkz . Python runbook'u oluşturma.