分享方式:


管理 Azure 自動化中的 Python 3 套件

本文說明如何在 Azure 沙箱環境和混合式 Runbook 背景工作角色上執行的 Azure 自動化中,匯入、管理及使用 Python 3 套件。 您應該在混合式 Runbook 背景工作角色上下載 Python 套件,以成功執行工作。 若要協助簡化 Runbook,您可以使用 Python 封裝來匯入需要的模組。

如需管理 Python 2 套件的相關資訊,請參閱管理 Python 2 套件

預設 Python 套件

為了在自動化服務中支援 Python 3.8 Runbook,預設會安裝一些 Python 套件,而這裡提供這些套件的清單。 將 Python 套件匯入您的自動化帳戶,即可覆寫預設版本。

喜好設定會提供給自動化帳戶中匯入的版本。 若要匯入單一套件,請參閱匯入套件。 若要匯入具有多個套件的套件,請參閱匯入具有相依性的套件

注意

Python 3.10 (預覽) 未安裝預設套件。

封裝為原始程式檔

Azure 自動化僅支援只包含 Python 程式碼的 Python 套件,而不包含其他語言的其他語言延伸模組或程式碼。 不過,Azure 沙箱環境可能沒有 C/C++ 二進位檔的必要編譯器,因此建議改用 wheel 檔案

注意

目前,Python 3.10 (預覽) 僅支援 wheel 檔案。

Python 套件索引 (PyPI) 是適用於 Python 程式設計語言的軟體存放庫。 從 PyPI 選取要匯入自動化帳戶的 Python 3 套件時,請注意下列檔案名稱部分:

選取 Python 版本:

檔案名稱部分 描述
cp38 自動化支援適用於雲端工作的 Python 3.8
amd64 Azure 沙箱程序是 Windows 64 位元架構。

例如:

  • 若要匯入 pandas - 請選取名稱類似於 pandas-1.2.3-cp38-win_amd64.whl 的 wheel 檔案。

PyPI 上提供的一些 Python 套件不提供 wheel 檔案。 在此情況下,請下載來源 (.zip 或 .tar.gz 檔案),並使用 pip 來產生 wheel 檔案。

使用已安裝 Python 3.8.x 和 wheel 套件的 64 位元 Windows 電腦執行下列步驟:

  1. 下載原始程式檔 pandas-1.2.4.tar.gz
  2. 使用下列命令執行 pip 以取得 wheel 檔案:pip wheel --no-deps pandas-1.2.4.tar.gz

匯入套件

  1. 從您的自動化帳戶中,選取 [共用資源] 下的 [Python 套件]。 然後選取 [+ 新增 Python 套件]。

    [Python 套件] 頁面的螢幕擷取畫面,其中顯示左側功能表中的 Python 套件,並醒目提示 [新增 Python 套件]。

  2. 在 [新增 Python 套件] 頁面上,選取要上載的本機套件。 套件可以是適用於 Python 3.8 的 .whl.tar.gz 檔案,以及適用於 Python 3.10 (預覽) 的 .whl 檔案。

  3. 輸入名稱,然後選取 [執行階段版本 ] 作為 Python 3.8 或 Python 3.10 (預覽)。

    注意

    目前,除了澳大利亞中部 2、南韓南部、瑞典南部、Jio 印度中部、巴西東南部、印度中部、印度西部、阿拉伯聯合大公國中部和 Gov 雲端以外,所有雲端和混合式工作在公用區域中都支援 Python 3.10 (預覽) 執行階段版本。

  4. 選取 [匯入]。

    此螢幕擷取畫面顯示 [新增 Python 3.8 套件] 頁面,其中已選取上傳的 tar.gz 檔案。

一旦套件匯入後,會列在您自動化帳戶中的 [Python 套件] 頁面上。 若要移除套件,請選取套件並選取 [刪除 ]

此螢幕擷取畫面顯示匯入套件之後的 Python 3.8 套件頁面。

匯入具有相依性的套件

您可以透過將下列 Python 指令碼匯入至 Python 3.8 Runbook,來匯入 Python 3.8 套件及其相依性。 確保已為您的自動化帳戶啟用受控識別,並具有自動化參與者存取權,以成功匯入套件。

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

將指令碼匯入 Runbook

如需匯入 Runbook 的相關資訊,請參閱從 Azure 入口網站匯入 Runbook。 將檔案從 GitHub 複製到入口網站可以在執行匯入之前存取的儲存體。

注意

目前,Python 3.10 (預覽) 不支援從 Azure 入口網站匯入 Runbook。

[匯入 Runbook] 頁面會預設 Runbook 名稱,以符合指令碼的名稱。 如果您有欄位的存取權,則可以變更名稱。 Runbook 類型可能預設為 Python 2.7。 如果是,請務必將其變更為 Python 3.8

顯示 Python 3 Runbook 匯入頁面的螢幕擷取畫面。

執行 Runbook 以匯入套件和相依性

建立並發佈 Runbook 之後,請予以執行以匯入套件。 如需執行 Runbook 的詳細資訊,請參閱在 Azure 自動化中啟動 Runbook

指令碼 (import_py3package_from_pypi.py) 需要下列參數。

參數 描述
subscription_id 自動化帳戶的訂用帳戶識別碼
resource_group 定義自動化帳戶所在資源群組的名稱
automation_account 自動化帳戶名稱
module_name 要從 pypi.org 匯入之模組的名稱
module_version 模組的版本

參數值應以下列格式提供為單一字串:

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

如需搭配 Runbook 使用參數的詳細資訊,請參閱使用 Runbook 參數

在 Runbook 中使用封裝

套件匯入後,您就可以在 Runbook 中加以使用。 新增下列程式碼以列出 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 混合式 Runbook 背景工作角色。

識別沙箱中的可用套件

使用下列程式碼來列出預設已安裝的模組:

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

新增 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 Runbook,請參閱建立 Python Runbook