Описание
У меня есть два проекта 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
Как я могу полностью изолировать зависимости между двумя проектами Python (с редактируемой установкой)? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как я могу изолировать связь между двумя портами Ethernet с помощью Linux?
Anonymous » » в форуме Linux - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-