Компонент выполнения скрипта Python
В этой статье описывается компонент выполнения скрипта Python в конструкторе Машинное обучение Azure.
Используйте этот компонент для выполнения кода Python. Дополнительные сведения об архитектуре и принципах проектирования Python см. в статье выполнение кода Python в конструкторе машинного обучения Azure.
С помощью Python можно выполнять задачи, которые не поддерживаются существующими компонентами, например:
- Визуализация данных с помощью matplotlib .
- Использование библиотек Python для перечисления наборов данных и моделей в рабочей области.
- Чтение, загрузка и обработка данных из источников, которые не поддерживаются компонентом импорта данных.
- Запустите собственный код глубокого обучения.
Поддерживаемые пакеты Python
Машинное обучение Azure использует дистрибутив Python Anaconda, который включает множество стандартных служебных программ для обработки данных. Мы будем обновлять версию Anaconda автоматически. Текущая версия:
- Дистрибутив Anaconda 4.5+ для Python 3.6
Чтобы установить пакеты, отсутствующие в предварительно установленном списке (например, scikit-misc), добавьте в сценарий следующий код:
import os os.system(f"pip install scikit-misc")
Используйте следующий код, чтобы установить пакеты для повышения производительности, особенно для вывода:
import importlib.util package_name = 'scikit-misc' spec = importlib.util.find_spec(package_name) if spec is None: import os os.system(f"pip install scikit-misc")
Если конвейер содержит несколько компонентов выполнения скрипта Python, для которых требуются пакеты, отсутствующие в списке предварительно установленных, установите пакеты в каждый компонент.
Компонент выполнения скрипта Python не поддерживает установку пакетов, зависящих от дополнительных собственных библиотек, с помощью команды вроде «apt-get», например Java, PyODBC и т. д. Это происходит потому, что этот компонент выполняется только в простой среде с предварительно установленным Python и не имеет разрешений администратора.
Доступ к текущей рабочей области и зарегистрированным наборам данных
Чтобы получить доступ к зарегистрированным наборам данных в рабочей области, можно обратиться к следующему примеру кода:
def azureml_main(dataframe1 = None, dataframe2 = None): # Execution logic goes here print(f'Input pandas.DataFrame #1: ') from azureml.core import Run run = Run.get_context(allow_offline=True) #access to current workspace ws = run.experiment.workspace #access to registered dataset of current workspace from azureml.core import Dataset dataset = Dataset.get_by_name(ws, name='test-register-tabular-in-designer') dataframe1 = dataset.to_pandas_dataframe() # If a zip file is connected to the third input port, # it is unzipped under "./Script Bundle". This directory is added # to sys.path. Therefore, if your zip file contains a Python file # mymodule.py you can import it using: # import mymodule # Return value must be of a sequence of pandas.DataFrame # E.g. # - Single return value: return dataframe1, # - Two return values: return dataframe1, dataframe2 return dataframe1,
Отправка файлов
Компонент выполнения скрипта Python поддерживает отправку файлов с помощью пакета SDK для машинного обучения Azure Python.
В следующем примере показано, как передать файл изображения в компонент выполнения скрипта Python:
# The script MUST contain a function named azureml_main, # which is the entry point for this component. # Imports up here can be used to import pandas as pd # The entry point function must have two input arguments: # Param: a pandas.DataFrame # Param: a pandas.DataFrame def azureml_main(dataframe1 = None, dataframe2 = None): # Execution logic goes here print(f'Input pandas.DataFrame #1: ') from matplotlib import pyplot as plt plt.plot([1, 2, 3, 4]) plt.ylabel('some numbers') img_file = "line.png" plt.savefig(img_file) from azureml.core import Run run = Run.get_context(allow_offline=True) run.upload_file(f"graphics/", img_file) # Return value must be of a sequence of pandas.DataFrame # For example: # - Single return value: return dataframe1, # - Two return values: return dataframe1, dataframe2 return dataframe1,
После завершения выполнения конвейера можно предварительно просмотреть образ в правой панели компонента.

Вы также можете загрузить файл в любое хранилище данных, используя следующий код. Вы можете предварительно просмотреть файл только в своей учетной записи хранения.
import pandas as pd # The entry point function MUST have two input arguments. # If the input port is not connected, the corresponding # dataframe argument will be None. # Param: a pandas.DataFrame # Param: a pandas.DataFrame def azureml_main(dataframe1 = None, dataframe2 = None): # Execution logic goes here print(f'Input pandas.DataFrame #1: ') from matplotlib import pyplot as plt import os plt.plot([1, 2, 3, 4]) plt.ylabel('some numbers') img_file = "line.png" # Set path path = "./img_folder" os.mkdir(path) plt.savefig(os.path.join(path,img_file)) # Get current workspace from azureml.core import Run run = Run.get_context(allow_offline=True) ws = run.experiment.workspace # Get a named datastore from the current workspace and upload to specified path from azureml.core import Datastore datastore = Datastore.get(ws, datastore_name='workspacefilestore') datastore.upload(path) return dataframe1,
Настройка выполнения скрипта Python
Компонент выполнения скрипта Python содержит пример кода Python, который можно использовать в качестве отправной точки. Чтобы настроить компонент выполнения скрипта Python, нужно предоставить набор входных данных и выполняемый код Python в текстовом поле скрипт Python.

- Добавьте компонент выполнения скрипта Python в конвейер.
- Добавьте и подключитесь dataSet1 любые наборы данных из конструктора, которые вы хотите использовать для ввода. Сошлитесь на этот набор данных в скрипте Python как DataFrame1. Использовать набор данных необязательно. Используйте его, если хотите создать данные с помощью Python, или используйте код Python для импорта данных непосредственно в компонент. Этот компонент поддерживает добавление второго набора данных в DataSet2. Сошлитесь на этот набор данных в скрипте Python как DataFrame2. Наборы данных, хранящиеся в модуле Машинного обучения Azure, автоматически преобразуются в кадры с данными из библиотеки Pandas при загрузке с этим компонентом.
- Чтобы включить новые пакеты или код Python, подключите сжатый ZIP-файл, содержащий эти дополнительные ресурсы, в порт пакета сценариев. Если размер скрипта превышает 16 КБ, используйте порт пакета сценариев, чтобы избежать ошибок, например Командная строка, превышает ограничение в 16597 символов.
- Упакуйте скрипт и другие дополнительные ресурсы в ZIP-файл.
- Отправьте ZIP-файл в качестве Файла набора данных в студию.
- Перетащите компонент набора данных из списка Наборы данных в левой панели компонента на странице конструктора разработки.
- Подключите компонент набора данных к порту Пакет скрипта компонента выполнения скрипта Python.
Любой файл, содержащийся в загруженном ZIP-архиве, можно использовать во время выполнения конвейера. Если архив содержит структуру каталогов, структура сохраняется.
Используйте уникальное и понятное имя для файлов в пакете сценариев, поскольку некоторые распространенные слова (например test , app и т. д.) зарезервированы для встроенных служб.
Ниже приведен пример пакета сценариев, который содержит файл скрипта Python и txt-файл:

Ниже приведено содержимое my_script.py :
def my_func(dataframe1): return dataframe1Ниже приведен пример кода, демонстрирующий использование файлов в пакете скриптов.
import pandas as pd from my_script import my_func def azureml_main(dataframe1 = None, dataframe2 = None): # Execution logic goes here print(f'Input pandas.DataFrame #1: ') # Test the custom defined Python function dataframe1 = my_func(dataframe1) # Test to read custom uploaded files by relative path with open('./Script Bundle/my_sample.txt', 'r') as text_file: sample = text_file.read() return dataframe1, pd.DataFrame(columns=["Sample"], data=[[sample]])Примечание Будьте внимательны при написании сценария. Убедитесь в отсутствии синтаксических ошибок, таких как использование необъявленных переменных или неимпортированных компонентов или функций. Обратите особое внимание на список предварительно установленных компонентов. Чтобы импортировать компоненты, которых нет в списке, установите соответствующие пакеты в скрипте, например:
import os os.system(f"pip install scikit-misc")- Скрипт должен содержать функцию с именем azureml_main в качестве точки входа для этого компонента.
- Функция точки входа должна иметь два входных аргумента, Param и Param , даже если эти аргументы не используются в скрипте.
- ZIP-файлы, подключенные к третьему порту ввода, распаковываются и хранятся в каталоге .\Script Bundle , который также добавляется в Python sys.path .
Если ZIP-файл содержит mymodule.py , импортируйте его с помощью команды import mymodule .
В конструктор можно вернуть два набора данных, которые должны быть последовательностью типа pandas.DataFrame . Вы можете создавать другие выходные данные в коде Python и записывать их непосредственно в службу хранилища Azure.
Не рекомендуется подключаться к базе данных или другим внешним хранилищам в компоненте выполнения скрипта Python. Можно использовать компонент импорта данных и компонент экспорта данных
Результаты
Результаты любых вычислений с помощью внедренного кода Python должны быть предоставлены как pandas.DataFrame , что автоматически преобразуется в формат набора данных машинное обучение Azure. Затем можно использовать результаты с другими компонентами в конвейере.
Компонент возвращает два набора данных:
- Набор данных Results 1, определяемый первым возвращенным кадром данных Pandas в скрипте Python.
- Набор данных Results 2, определяемый вторым возвращенным кадром данных Pandas в скрипте Python.
Предварительно установленные пакеты Python
Существуют следующие предустановленные пакеты:
- adal==1.2.2
- applicationinsights==0.11.9
- attrs==19.3.0
- azure-common==1.1.25
- azure-core==1.3.0
- azure-graphrbac==0.61.1
- azure-identity==1.3.0
- azure-mgmt-authorization==0.60.0
- azure-mgmt-containerregistry==2.8.0
- azure-mgmt-keyvault==2.2.0
- azure-mgmt-resource==8.0.1
- azure-mgmt-storage==8.0.0
- azure-storage-blob 1.5.0
- azure-storage-common==1.4.2
- azureml-core==1.1.5.5
- azureml-dataprep-native==14.1.0
- azureml-dataprep==1.3.5
- azureml-defaults==1.1.5.1
- azureml-designer-classic-modules==0.0.118
- azureml-designer-core==0.0.31
- azureml-designer-internal==0.0.18
- azureml-model-management-sdk==1.0.1b6.post1
- azureml-pipeline-core==1.1.5
- azureml-telemetry==1.1.5.3
- backports.tempfile==1.0
- backports.weakref==1.0.post1
- boto3==1.12.29
- botocore==1.15.29
- cachetools==4.0.0
- certifi==2019.11.28
- cffi==1.12.3
- chardet==3.0.4
- click==7.1.1
- cloudpickle==1.3.0
- configparser==3.7.4
- contextlib2==0.6.0.post1
- cryptography==2.8
- cycler==0.10.0
- dill==0.3.1.1
- distro==1.4.0
- docker==4.2.0
- docutils==0.15.2
- dotnetcore2==2.1.13
- flask==1.0.3
- fusepy==3.0.1
- gensim==3.8.1
- google-api-core==1.16.0
- google-auth==1.12.0
- google-cloud-core==1.3.0
- google-cloud-storage==1.26.0
- google-resumable-media==0.5.0
- googleapis-common-protos==1.51.0
- gunicorn==19.9.0
- idna==2.9
- imbalanced-learn==0.4.3
- isodate==0.6.0
- itsdangerous==1.1.0
- jeepney==0.4.3
- jinja2==2.11.1
- jmespath==0.9.5
- joblib==0.14.0
- json-logging-py==0.2
- jsonpickle==1.3
- jsonschema==3.0.1
- kiwisolver==1.1.0
- liac-arff==2.4.0
- lightgbm==2.2.3
- MarkupSafe==1.1.1
- matplotlib==3.1.3
- more-itertools==6.0.0
- msal-extensions==0.1.3
- msal==1.1.0
- msrest==0.6.11
- msrestazure==0.6.3
- ndg-httpsclient==0.5.1
- nimbusml==1.6.1
- numpy==1.18.2
- oauthlib==3.1.0
- pandas==0.25.3
- pathspec==0.7.0
- pip==20.0.2
- portalocker==1.6.0
- protobuf==3.11.3
- pyarrow==0.16.0
- pyasn1-modules==0.2.8
- pyasn1==0.4.8
- pycparser==2.20
- pycryptodomex==3.7.3
- pyjwt==1.7.1
- pyOpenSSL==19.1.0
- pyparsing==2.4.6
- pyrsistent==0.16.0
- python-dateutil==2.8.1
- pytz==2019.3
- requests-oauthlib==1.3.0
- requests==2.23.0
- RSA-4.0
- ruamel.yaml==0.15.89
- s3transfer==0.3.3
- scikit-learn==0.22.2
- scipy==1.4.1
- SecretStorage==3.1.2
- setuptools==46.1.1.post20200323
- six==1.14.0
- smart-open==1.10.0
- urllib3==1.25.8
- websocket-client==0.57.0
- werkzeug==0.16.1
- wheel==0.34.2
Дальнейшие действия
Ознакомьтесь с набором доступных компонентов для Машинного обучения Azure.
Как остановить скрипт в любой момент
Как остановить анимацию в нужный момент?
Добрый день. Программирую пока не в классах. У меня следующая проблема: имеется некий мувиклип.Как остановить скрипт
вот к примеру запустил я скрипт по перебору записей в таблице и записи их в другую таблицу — но.Как рассчитать точное местонахождение Плутона в любой момент времени
Добрый вечер. Сразу говорю в математике и физике не силен, но захотелось поставить себе такую.Как организовать выход из циклической графической программы в любой момент ее выполнения?
Есть простая программа: Uses crt, Graph; Var Driver, Mode: Integer; Color: Word; x,y: Integer;.1183 / 759 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
Сообщение от nik1on2 
СРОЧН как остановить скрипт в любой момент!
sudo rm -rf
format c:\А если по делу, например скрипт крутится в докере, как остановишь?
Вводные добавь, раз вопрос задал.709 / 348 / 120
Регистрация: 09.12.2020
Сообщений: 919
nik1on2, exit(0)?
enx, остроalilxxey, со специями, все по Герберту, spice must flow!
Меню пользователя enx Am I evil? Yes, I am!


16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624
Сообщение от enx 
sudo rm -rf
слеш не дописал )))iSmokeJC, вдруг копи паст сделает в убунте
Меню пользователя enx enx, это приучит своевременно бекапы делать )))
Меню пользователя @ iSmokeJC 87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604Как корректно остановить выполняющийся скрипт извне?
Имеется скрипт (написанный на VBS) для просмотра и сортировки почты. Он крутит бесконечный цикл.Цикл: Выйти в любой момент времени из цикла while нажатием определённой кнопки. Как реализовать?
Необходимо выйти в любой момент времени из цикла while нажатием определённой кнопки. Как.Как полностью остановить скрипт при соблюдении условия?
Что мне нужно написать вместо "this.enabled = false;", чтобы при соблюдении условия скрипт.
Как остановить скрипт и все функции которые в нем работают?
У меня есть скрипт который нужно отключать при нажатии на кнопку, в инспекторе он отключается, но.Как остановить программу до нажатия любой клавиши «Press any key to continue»?
Я попробовал introloop: if (onkeydown == false) continue introloop; но это не работает
Остановить функцию в определенный момент
есть счетчик. нужно сделать что бы он останавливался при достижение 0. function countdown_go()Как остановить скрипт на Python

if а != «Окно»:
print(«Неверное значение места. Перезапустите программу и введите значение из скобок»)
*Тут должна быть команда которая остановит скрипт*
if a == «Дверь»:
b = int(«Введите количество дверей: «)
Еще раз если не понятно в первом предложении. Скрипт выдает следующую команду написанную в строчке. В скрипте прописано: if a == «Дверь», нужно выдать команду которая скажет о подтверждении выбора. Это я сделал. Но тут незадача, при проверке и написании 1 или другого значения, но не «Дверь», выводит ту самую ошибку которая должна быть и после которой скрипт должен прекратить работу. Но вылезает следующее действие! Следующее действие у меня отвечает за количество дверей(указал в скрипте выше), и после ошибки которая должна выводиться, если значение переменной «a» не равно «Дверь» вылезает строчка int(«Введите количество дверей: «). Как остановить скрипт после написанной мною ошибки? На скрине показал что выдаетКак завершить python скрипт в консоли командой?

- Python
Палиндромы leetcode, в VS все правильно, на сайте другой ответ, что делать?
- 1 подписчик
- 2 часа назад
- 51 просмотр

- HTML
- +3 ещё
Почему не работает переход на страницу?
- 1 подписчик
- 3 часа назад
- 82 просмотра

- Python
- +1 ещё
Реально ли вывести виджет с какой-либо инфой поверх PySide6.QtMultimediaWidgets.QVideoWidget?
- 1 подписчик
- 3 часа назад
- 12 просмотров

- Python
Почему не проходит код для решения задачи на leetcode?
- 1 подписчик
- 4 часа назад
- 74 просмотра

- Python
Почему текстовый редактор и консоль по-разному присваивают ссылки на переменные Python?
- 1 подписчик
- 4 часа назад
- 30 просмотров

- Python
- +1 ещё
Почему callback_query_handler не видит call.data?
- 1 подписчик
- 9 часов назад
- 39 просмотров

- Python
При выводе users_cards выводится [, . ] как это исправить?
- 1 подписчик
- 10 часов назад
- 34 просмотра

- Python
В приложении django 4.2 + django rest framework: Model.__str__ нужен только для админки?
- 1 подписчик
- 12 часов назад
- 47 просмотров

- Python
- +1 ещё
Не правильная проверка ячейки таблицы через цикл, почему не записывается переменная?
- 1 подписчик
- 12 часов назад
- 37 просмотров

- Python
Почему падает бот?
- 1 подписчик
- вчера
- 85 просмотров
от 120 000 ₽
от 120 000 до 240 000 ₽
19 нояб. 2023, в 23:12
55555 руб./за проект
19 нояб. 2023, в 20:35
4000 руб./за проект
19 нояб. 2023, в 20:11
500 руб./за проект
Минуточку внимания
Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями
- Не могу настроить почтовый сервер(Postfix/Dovecot с интеграцией в MS Active Directory) на alt linux. Может у кого-то есть решение?
- 3 подписчика
- 1 ответ
- 3 подписчика
- 2 ответа
- 2 подписчика
- 1 ответ
- 2 подписчика
- 1 ответ
- 3 подписчика
- 2 ответа
- 2 подписчика
- 2 ответа
- 2 подписчика
- 1 ответ
- 2 подписчика
- 3 ответа
- 2 подписчика
- 1 ответ
- 2 подписчика
- 1 ответ