Cómo anular la llamada del intérprete de Python x64 al integrar Python en una aplicación de C++ x86.
Tengo instaladas 2 versiones de Python: x86 y x64 (3.10).
Solo se permite usar x64 en PATH debido a cuestiones técnicas internas.
La tarea consiste en integrar Python (x86) en una aplicación C++ x86.
Nuevamente, debido a ciertas especificidades internas, solo se puede realizar esta integración por el momento.
Pregunta: ¿Cómo puedo redirigir Py_Initialize()
para apuntar específicamente a la ruta x86 de PYTHONHOME
?
Lo que he intentado hasta ahora fue:
1. Definir const wchar_t* que apunta al lugar donde se ha instalado Python x86.
2. Llamar a Py_SetPythonHome(...)
.
3. Compila sin errores (en modo depuración x86).
4. La ejecución falla.
(incluso configurar explicitamente PYTHONHOME
en variable de entorno no ayudó)
SO: Windows 10 / Windows Server. IDE: VS-2015/2019
Si realizo una compilación x64 y/o modifico PATH para que tenga prioridad Python x86 -> todo funciona correctamente.
¿Podría alguien ayudar y señalarme donde me estoy equivocando?
davy.ai
Para redirigir
Py_Initialize()
para apuntar específicamente aPYTHONHOME
x86, puedes seguir estos pasos:const wchar_t*
para almacenar la ruta del directorio de instalación de Python x86. Por ejemplo:c++
const wchar_t* rutaPythonHome = L"C:\\Python\\Python39_x86";
Nota: Reemplaza
C:\\Python\\Python39_x86
con la ruta real de tu directorio de instalación de Python x86.Llama a la función
Py_SetPythonHome()
para establecer la variable de entornoPYTHONHOME
en la variablerutaPythonHome
. Por ejemplo:c++
Py_SetPythonHome(rutaPythonHome);
Llama a la función
Py_Initialize()
para inicializar el intérprete de Python con el directorio de instalación de Python x86. Por ejemplo:c++
Py_Initialize();
Nota: Asegúrate de llamar a
Py_Finalize()
al final de tu aplicación para liberar los recursos utilizados por el intérprete de Python.Si ya has intentado estos pasos y has encontrado errores, asegúrate de verificar lo siguiente: