Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как импортировать, управлять и использовать пакеты Python 3 в службе автоматизации Azure, запускающейся в среде песочницы Azure и на гибридных работниках Runbook. Пакеты Python должны быть загружены на агенты Hybrid Runbook для успешного выполнения задания. Чтобы упростить модули Runbook, можно использовать пакеты Python для импорта необходимых модулей.
Сведения об управлении пакетами Python 2 см. в статье "Управление пакетами Python 2".
Примечание.
Python 2.7 и Python 3.8 больше не поддерживаются родительской платформой Python. Рекомендуется создавать модули Runbook только в Python 3.10.
Пакеты Python по умолчанию
Для поддержки модулей Runbook Python 3.8 в службе автоматизации некоторые пакеты Python устанавливаются по умолчанию, и список этих пакетов находится здесь. Версию по умолчанию можно переопределить, импортировав пакеты Python в свою учетную запись службы автоматизации.
Приоритет отдается импортированной версии в вашей учетной записи автоматизации. Чтобы импортировать один пакет, см. раздел Импорт пакета. Чтобы импортировать пакет с несколькими пакетами, см. раздел Импорт пакета с зависимостями.
Примечание.
Для Python 3.10 не установлены пакеты по умолчанию.
Пакеты как исходные файлы
Служба автоматизации Azure поддерживает пакеты Python, содержащие только код Python и не включающие в себя расширения или код на других языках. Но в среде песочницы Azure может не быть необходимых компиляторов для двоичных файлов C/C++, поэтому рекомендуется использовать файлы wheel.
Примечание.
В настоящее время Python 3.10 поддерживает только файлы колесика.
Индекс пакетов Python (PyPI) — это репозиторий программного обеспечения для языка Python. При выборе пакета Python 3 для импорта в учетную запись автоматизации из PyPI обратите внимание на следующие компоненты имени файла:
Выберите версию Python:
| Компонент имени файла | Описание |
|---|---|
| cp310 | Автоматизация поддерживает задания Python 3.10 для облачных заданий. |
| manylinux_x86_64 | Процессы песочницы Azure — это 64-разрядная архитектура Linux для модулей Runbook Python 3.10. |
Например:
- Чтобы импортировать pandas, выберите wheel-файл с именем, аналогичным
pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Некоторые пакеты Python, доступные на PyPI, не содержат файл wheel. В этом случае скачайте источник (.zip или файл .tar.gz) и создайте файл колесика с помощью pip.
Выполните следующие действия, используя 64-разрядный компьютер Linux с установленным пакетом Python 3.10.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 в учетной записи службы автоматизации. Чтобы удалить пакет, выберите его и выберите Удалить.
Импорт пакета с зависимостями
Можно импортировать пакет 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 по умолчанию используется имя runbook в соответствии с именем скрипта. Если у вас есть доступ к соответствующему полю, вы можете изменить название. В качестве типа Runbook по умолчанию может быть установлен Python 2.7. Если это так, обязательно измените его на Python 3.8.
Выполнение модуля Runbook для импорта пакета и зависимостей
После создания и публикации модуля runbook запустите его, чтобы импортировать пакет. Дополнительные сведения о запуске модуля runbook см. в статье Запуск модуля runbook в службе автоматизации Azure.
Для скрипта (import_py3package_from_pypi.py) обязательны указанные ниже параметры.
| Параметр | Описание |
|---|---|
| subscription_id | Идентификатор подписки учетной записи службы автоматизации |
| ресурсная группа | Имя группы ресурсов, в которой определена учетная запись службы автоматизации |
| учетная запись автоматизации | Имя учетной записи автоматизации |
| module_name | Имя модуля, который нужно импортировать из pypi.org |
| версия_модуля | Версия модуля |
Значение параметра должно быть предоставлено в виде одной строки в следующем формате:
-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 см. Создание runbook на Python.