Можно ли запустить вызываемую функцию/функцию в другой виртуальной среде в Python? ⇐ Python

Программы на Python
Anonymous
Можно ли запустить вызываемую функцию/функцию в другой виртуальной среде в Python?

Сообщение Anonymous »

У меня есть WebAPI, в котором находится внешняя библиотека, и API должен иметь возможность обрабатывать несколько версий внешней библиотеки. Я могу придумать два способа решения этой проблемы:
  • Иметь несколько экземпляров сервера API для каждой версии библиотеки и использовать обратный прокси-сервер для маршрутизации трафика к определенной версии на основе параметра URL.
  • В рамках Python API создает виртуальную среду для каждой версии библиотеки, которую вы хотите запустить, а затем, когда вы вызываете конечную точку, он запускает мой код внутри процесса в соответствующей виртуальной среде.
Я склоняюсь к тому, чтобы попытаться заставить #2 работать, если это возможно, поскольку его будет проще развернуть.
Для этого я хотел бы иметь возможность создать экземпляр FastAPI, где он мог бы получить версию пакета, который вы хотите запустить, затем запустить функцию в процессе и вернуть результат. Минимальный пример:
from fastapi import FastAPI
import numpy as np

app = FastAPI()

@app.get("/{version}/version")
def get_version(version: str) -> str:
"""
This function will create a venv for the numpy version if it doesnt exist,
and then activate that venv and run the code within as a process on that
virtual environment.
"""
return np.__version__


Подробнее здесь: https://stackoverflow.com/questions/793 ... ironment-i

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