管理 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 電腦執行下列步驟:
- 下載原始程式檔
pandas-1.2.4.tar.gz
。 - 使用下列命令執行 pip 以取得 wheel 檔案:
pip wheel --no-deps pandas-1.2.4.tar.gz
匯入套件
從您的自動化帳戶中,選取 [共用資源] 下的 [Python 套件]。 然後選取 [+ 新增 Python 套件]。
在 [新增 Python 套件] 頁面上,選取要上載的本機套件。 套件可以是適用於 Python 3.8 的 .whl 或 .tar.gz 檔案,以及適用於 Python 3.10 (預覽) 的 .whl 檔案。
輸入名稱,然後選取 [執行階段版本 ] 作為 Python 3.8 或 Python 3.10 (預覽)。
注意
目前,除了澳大利亞中部 2、南韓南部、瑞典南部、Jio 印度中部、巴西東南部、印度中部、印度西部、阿拉伯聯合大公國中部和 Gov 雲端以外,所有雲端和混合式工作在公用區域中都支援 Python 3.10 (預覽) 執行階段版本。
選取 [匯入]。
一旦套件匯入後,會列在您自動化帳戶中的 [Python 套件] 頁面上。 若要移除套件,請選取套件並選取 [刪除 ] 。
匯入具有相依性的套件
您可以透過將下列 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。
執行 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。