Llamar a python desde un programa c++ para su distribución


Me gustaría llamar a los archivos de script de python desde mi programa c++.

No estoy seguro de que las personas a las que distribuiré tengan instalado python.

Básicamente estoy buscando un .archivo lib que puedo usar que tiene una licencia de distribución similar a Apache.

Author: JeffV, 2008-09-08

4 answers

Boost tiene una biblioteca de interfaz python que podría ayudarte.

Boost.Python

 28
Author: roo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-10 22:04:39

Me gustaría llamar a los archivos de script de python desde mi programa c++.

Esto significa que desea incrustar Python en su aplicación C++. Como se mencionó en Incrustar Python en Otra aplicación :

Incrustar Python es similar a extendiéndolo, pero no del todo. El la diferencia es que cuando se extiende Python, el programa principal de la la aplicación sigue siendo Python intérprete, mientras que si se inserta Python, el programa principal puede tener Nada que ver con Python-en su lugar, algunas partes de la aplicación de vez en cuando llamar a la Pitón intérprete para ejecutar código Python.

Le sugiero que primero vaya a través de Incrustar Python en Otra Aplicación. A continuación, consulte los siguientes ejemplos

  1. Incrustación de Python en C / C++: Parte I

  2. Incrustación de Python en C / C++: Parte II

  3. Incrustación de Python en C/C++Multiproceso Aplicaciones

Si te gusta Aumentar.Python, puede visitar los siguientes enlaces:

  1. Incrustar Python con Boost.Python Parte 1
 58
Author: bhadra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-22 20:17:48

Boost es probablemente la mejor opción, sin embargo, si quieres algo que sea más independiente, y si esto es para usar con Windows (lo que parece factible dado que son las personas con menos probabilidades de tener instalado Python), entonces puedes usar py2exe para crear una DLL con puntos de entrada adecuados para objetos COM. A continuación, puede interactuar con la biblioteca a través de COM. (Obviamente esto no es en absoluto útil como una solución multiplataforma).

 3
Author: Tony Meyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-08 10:37:53

Incrustar el intérprete Python dentro de su aplicación C++ le permitirá ejecutar programas Python utilizando su aplicación ejecutar scripts Python. También hará que sea más fácil para esos scripts llamar a funciones de C++ en su aplicación. Si esto es lo que desea, entonces la biblioteca Boost mencionada anteriormente puede ser lo que desea para que sea más fácil crear el enlace. En el pasado he usado SWIG para generar interfaces Python en código C++. No estaba claro de su pregunta si quería los scripts de Python para llamar a su programa C++ o si solo quería que C++ llamara a Python.

Muchas de las funciones de Python utilizan módulos que no están integrados en el intérprete de Python. Si sus scripts Python llaman a estas funciones, entonces necesitará que sus usuarios instalen Python o incluir los archivos de tiempo de ejecución de python con su aplicación. Dependerá de los módulos que importe en sus scripts Python.

 3
Author: David Dibben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-30 11:35:24