Как я могу полностью изолировать зависимости между двумя проектами Python (с редактируемой установкой)?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу полностью изолировать зависимости между двумя проектами Python (с редактируемой установкой)?

Сообщение Anonymous »

Описание
У меня есть два проекта Python с отдельными виртуальными средами:
Проект A:< /em> Использует Python 3.9 и требует torch в версии, несовместимой с другими зависимостями от B.
Проект B: Использует Python 3.12 и не требует torch , но он опирается на некоторые функции из A.
Я хотел бы иметь возможность использовать функции из A в B, а также передавать массивы данных из B в A (поэтому аргументы консоли не вариант). в идеале с помощью pip install -e. В идеале A должен использовать свои собственные зависимости.
Проблема
Однако, когда я запускаю проект B, он выдает ошибку. потому что, конечно, torch не установлен в среде B.
Это все на одной машине, и оба являются моим собственным кодом (сейчас на Linux/Windows, и я пытаюсь сохранить его Независимо от ОС).
Рассмотренные мной подходы:
Вызов подпроцесса: Используйте подпроцесс в B для вызова сценариев от A, одновременно активируя виртуальную среду A для каждого вызова. Этот подход позволяет A сохранять свои собственные зависимости, но он кажется обходным решением, особенно при работе с несколькими вызовами или возвратом сложных данных, которые мне придется сериализовать (дополнительные шаги, дополнительное обслуживание).
Архитектура на основе сервисов: преобразуйте A в микросервис с помощью Flask или FastAPI. Затем B будет связываться с A через HTTP. Кажется, это хороший способ добиться полной изоляции. Это создает дополнительную сложность при работе в сети.
Автономный исполняемый сценарий: Пакет A представляет собой исполняемый сценарий, который B может вызывать независимо и использовать виртуальную среду A. Однако он по-прежнему требует обработки аргументов CLI и не поддерживает прямые вызовы функций.
Вопрос
Есть ли какие-либо лучшие подходы или лучшие практики для полной изоляции зависимостей в установках такого типа? В идеале я бы хотел, чтобы B вызывал функции из A напрямую, не сталкиваясь с конфликтами зависимостей. Я открыт для реструктуризации или использования других инструментов, если есть более чистое и эффективное решение. Буду рад любым советам!
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/791 ... h-editable
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»