es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilizando PyBind11 con un entorno virtual creado en tiempo de ejecución

Mi objetivo es incrustar el intérprete de Python utilizando PyBind11, pero para utilizar el intérprete desde un entorno virtual, de manera que la instalación de dependencias usando pip no sature las rutas del sistema.

Hay poca información en línea sobre este tema. https://stackoverflow.com/questions/56904149/embedding-python-with-pybind11-virtual-environment-doesnt-work codifica el venv en tiempo de compilación. Esto es insuficiente, ya que el venv no existe en ese momento, pero se creará cuando el motor de script esté habilitado en tiempo de ejecución.

El plan por ahora es hacer “pip install –target” en un directorio de caché y agregarlo a “sys.path”. Utilizando el intérprete del sistema. Esto está “bien”, pero preferiríamos no usar el intérprete del sistema.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Python, C++, virtualenv, pybind11 y python-embedding, el objetivo de incrustar el intérprete de Python utilizando PyBind11, pero utilizando el intérprete desde un entorno virtual, de manera que la instalación de dependencias utilizando pip no ensucie las rutas del sistema, se puede lograr mediante algunos métodos.

    Desafortunadamente, no hay mucha información disponible en línea sobre este tema. El método común que se encuentra en línea, como codificar el entorno virtual en tiempo de compilación, es insuficiente, ya que el entorno virtual no existe en ese momento, pero se creará cuando el motor de script se habilita en tiempo de ejecución.

    Un plan es utilizar el comando pip install --target para instalar las dependencias en un directorio de caché y luego agregarlo a sys.path. Este método es “aceptable” pero no es la solución más ideal, ya que utiliza el intérprete del sistema.

    Una solución más preferible sería crear el entorno virtual desde la propia aplicación C++ y luego utilizar el intérprete de ese entorno virtual para ejecutar código Python. Aunque este método requiere un entendimiento más profundo de C++ y entornos virtuales, proporciona una forma más limpia y eficiente de mantener las dependencias aisladas y organizadas.

    En general, incrustar el intérprete de Python utilizando PyBind11 en un entorno virtual requiere un poco de experimentación y exploración para determinar la mejor solución para los requisitos de la aplicación.

Comments are closed.