Как создать разные среды для разных пакетов Python в продакшене

Я новичок в Python, а также в Azure, поэтому мне может не хватать важной информации в моем дизайне. У нас есть несколько библиотек, созданных для использования пользователем при работе в рабочей области Azure ML. Теперь эти вопросы остаются прежними, если мы создаем библиотеки для использования пользователем в простой записной книжке Jupyter.

Теперь обе эти библиотеки имеют пакеты diff, которые могут отличаться от того, что использует пользователь. Например: пользователь может использовать среду, в которой используется numpy x.1, но пакет A может использовать x.2, а пакету B требуется x.3. Это возможно, поскольку все эти пакеты разрабатываются разными командами.

Теперь, что может быть лучшим способом справиться с этой проблемой в реальном мире. До сих пор я могу придумать следующие подходы:

  1. Установите эти файлы в другой контейнер докеров, где установлены необходимые пакеты. И получить желаемый результат в разных средах.
  2. Используйте параметры пользовательской среды, предоставляемые самой Azure. И запускайте несовместимые в другой среде.
  3. не уверен, можем ли мы создавать разные виртуальные среды и запускать пакеты в разных виртуальных средах, но что-то подобное, если это возможно.

Итак, я хотел знать, есть ли правильный способ сделать это в реальном мире. Я вижу, что мы должны создавать разные среды для каждого проекта, но как насчет случая, когда у нас разные пакеты, которым нужны разные версии общих зависимостей. Как поступить в таком случае?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы правы, вы можете создавать контейнеры Docker, чтобы создать отдельную среду для разных библиотек, чтобы пользователи могли управлять ими по отдельности. Вы также можете использовать пользовательскую среду Azure ML и создать изолированную среду для разных пакетов.

Для виртуальной среды один из вариантов — установить пакеты напрямую, а второй — создать файл requirements.txt, добавить все пакеты в этот файл и установить pip в файл requirements.txt в venv. И третий вариант — использовать setup.py > Добавьте все свои пакеты в setup.py и запустите код setup.py, чтобы установить эти пакеты, а затем импортировать их в соответствии с требованиями пользователей.

Виртуальная среда: -

Создан один файл requirements.txt, как показано ниже:

numpy==1.19.5
pandas==1.3.0

В записной книжке Azure ML создайте виртуальную среду и установите пакеты requirements.txt, как показано ниже:

!python3 -m venv myenv

!source myenv/bin/activate

!pip install -r requirements.txt

Вы можете сослаться на мой ответ на тему SO здесь, где я создал файл setup.py python с пакетами в моем репозитории github и установил их в свой блокнот.

Вы можете напрямую создавать различные файлы Python с пакетами и запускать их в своем ноутбуке, как показано ниже:

setup.py из моего ответа выше: -

from setuptools import setup, find_packages

setup(

name='pycode',

version='0.1',

packages=find_packages(),

install_requires=[

'numpy',

'pandas',

'scikit-learn'

],

entry_points = {

'console_scripts': [

'pycode=pycode.cli:main'

]

}

)

Выход:-

говоря об этом блокноте, будете ли вы переключаться между различными виртуальными средами или будете поддерживать одну виртуальную среду, в которой вы будете поддерживать все совместимые пакеты. моя проблема в том, как переключаться между diff virtual env в одном ноутбуке

Onki 29.05.2023 11:28

К сожалению, записные книжки Azure ML привязаны к одному ядру Python, поэтому вам нужно создать отдельную виртуальную среду в разных записных книжках.

SiddheshDesai 29.05.2023 12:02

так что это означает, что у меня осталось 2 варианта: либо использовать док-контейнеры, либо использовать лазурные среды для каждого пакета. любые предложения, какой из них лучше и почему из этих 2?

Onki 29.05.2023 13:11

Другие вопросы по теме

Похожие вопросы

Разделение полей формы на «части»; визуализировать часть с циклом, визуализировать часть с особым дизайном, снова визуализировать часть с циклом
Вызывает ли установка пакетов с версией Python, а затем понижение версии проблемы совместимости (например, модуль не найден)?
RuntimeError: asyncio.run() нельзя вызвать из работающего цикла событий. Кто-нибудь знает, что делать?
Переменные и их значения хранятся во внешнем файле YAML. Как читать их, как если бы я объявлял их внутренне?
Как я могу исправить ошибку «продолжить неправильно в цикле» в моем цикле Python в то время как?
Как я могу выровнять оба значения столбца после транспонирования?
'say' не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл
NumPy в Cython: тип времени компиляции и исходный тип
TypeError: Невозможно создать экземпляр абстрактного класса. Почему?
Стилизация таблицы pandas и объединение 2 фреймов данных