Управление пакетами Python 3 в службе автоматизации Azure
В этой статье описывается, как импортировать, управлять и использовать пакеты Python 3 в служба автоматизации Azure запуска в среде песочницы Azure и гибридных рабочих ролей Runbook. Пакеты Python должны быть загружены в рабочие роли Hybrid Runbook для успешного выполнения задания. Чтобы упростить модули Runbook, можно использовать пакеты Python для импорта необходимых модулей.
Сведения об управлении пакетами Python 2 см. в статье "Управление пакетами Python 2".
Пакеты Python по умолчанию
Для поддержки модулей Runbook Python 3.8 в службе автоматизации некоторые пакеты Python устанавливаются по умолчанию, и список этих пакетов находится здесь. Версию по умолчанию можно переопределить, импортировав пакеты Python в свою учетную запись службы автоматизации.
Приоритет отдается импортированной версии в учетной записи службы автоматизации Azure. Чтобы импортировать один пакет, см. раздел Импорт пакета. Чтобы импортировать пакет с несколькими пакетами, см. раздел Импорт пакета с зависимостями.
Примечание.
Для Python 3.10 (предварительная версия) не установлены пакеты по умолчанию.
Пакеты как исходные файлы
Служба автоматизации Azure поддерживает пакеты Python, содержащие только код Python и не включающие в себя расширения или код на других языках. Но в среде песочницы Azure может не быть необходимых компиляторов для двоичных файлов C/C++, поэтому рекомендуется использовать файлы wheel.
Примечание.
В настоящее время Python 3.10 (предварительная версия) поддерживает только файлы колесика.
Индекс пакетов Python (PyPI) — это репозиторий программного обеспечения для языка Python. При выборе пакета Python 3 для импорта в учетную запись автоматизации из PyPI обратите внимание на следующие компоненты имени файла:
Выберите версию Python:
Компонент имени файла | Description |
---|---|
cp38 | Автоматизация поддерживает задания Python 3.8 для облачных заданий. |
amd64 | Процессы песочницы Azure относятся к 64-разрядной архитектуре Windows. |
Например:
- Чтобы импортировать pandas, выберите файл колесика с именем, похожим на
pandas-1.2.3-cp38-win_amd64.whl
.
Некоторые пакеты Python, доступные на PyPI, не содержат файл wheel. В таком случае загрузите исходник (файл .zip или .tar.gz) и сгенерируйте файл wheel с помощью pip
.
Выполните следующие действия, используя 64-разрядный компьютер Windows с установленным пакетом Python 3.8.x и колесикой:
- Загрузите исходный файл
pandas-1.2.4.tar.gz
. - Запустите pip, чтобы получить файл колеса с помощью следующей команды:
pip wheel --no-deps pandas-1.2.4.tar.gz
Импорт пакета
В учетной записи службы автоматизации в области Общие ресурсы выберите Пакеты Python. Затем выберите + Добавить пакет Python.
На странице Добавить пакет Python выберите локальный пакет для загрузки. Пакет может быть файлом .whl или .tar.gz для Python 3.8 и файлом .whl для Python 3.10 (предварительная версия).
Введите имя и выберите версию среды выполнения Python 3.8 или Python 3.10 (предварительная версия).
Примечание.
В настоящее время версия среды выполнения Python 3.10 (предварительная версия) поддерживается как для облачных, так и гибридных заданий во всех общедоступных регионах, кроме Австралии Central2, Южной Кореи, Швеции, Южной Швеции, Jio India Central, Бразилии, Центральной Индии, Западной Индии, Центральной и Gov облака.
Выберите Импорт.
После импорта пакета он отображается на странице пакетов Python в учетной записи службы автоматизации. Чтобы удалить пакет, выберите его и выберите Удалить.
Импорт пакета с зависимостями
Можно импортировать пакет Python 3.8 и его зависимости, импортировав следующий сценарий Python в модуль Runbook Python 3.8. Убедитесь, что управляемое удостоверение включено для учетной записи службы автоматизации и имеет доступ участника автоматизации для успешного импорта пакета.
https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py
Импорт скрипта в runbook
Сведения об импорте runbook см. в разделе Импорт последовательности runbook с портала Azure. Скопируйте файл из GitHub в хранилище, к которому может получить доступ портал, прежде чем выполнять импорт.
Примечание.
В настоящее время импорт модуля Runbook с портала Azure не поддерживается для Python 3.10 (предварительная версия).
На странице Импорт модуля runbook по умолчанию используется имя runbook в соответствии с именем скрипта. Если у вас есть доступ к полю, вы можете изменить имя. В качестве типа Runbook по умолчанию может быть установлен Python 2.7. Если это так, обязательно измените его на Python 3.8.
Запуск runbook для импорта пакета и зависимостей
После создания и публикации модуля runbook запустите его, чтобы импортировать пакет. Дополнительные сведения о запуске модуля runbook см. в статье Запуск модуля runbook в службе автоматизации Azure.
Для скрипта (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, поэтому он недоступен для импорта в гибридную рабочую роль Runbook 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)
Командлеты PowerShell для Python 3.8
Добавление нового пакета 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
Следующие шаги
Дополнительные сведения см. в статье Создание runbook для Python.