blob: 418b225cf615b50dea6f39a66077a1c9322e0393 [file] [log] [blame]
Guido van Rossum705d5171994-10-08 19:30:50 +00001/* Example of embedding Python in another program */
2
Guido van Rossum3caad8c1995-03-28 09:22:53 +00003#include "Python.h"
Guido van Rossum705d5171994-10-08 19:30:50 +00004
5static char *argv0;
6
7main(argc, argv)
8 int argc;
9 char **argv;
10{
11 /* Save a copy of argv0 */
12 argv0 = argv[0];
13
14 /* Initialize the Python interpreter. Required. */
Guido van Rossum3caad8c1995-03-28 09:22:53 +000015 Py_Initialize();
Guido van Rossum705d5171994-10-08 19:30:50 +000016
17 /* Define sys.argv. It is up to the application if you
18 want this; you can also let it undefined (since the Python
19 code is generally not a main program it has no business
20 touching sys.argv...) */
Guido van Rossum3caad8c1995-03-28 09:22:53 +000021 PySys_SetArgv(argc, argv);
Guido van Rossum705d5171994-10-08 19:30:50 +000022
23 /* Do some application specific code */
24 printf("Hello, brave new world\n\n");
25
26 /* Execute some Python statements (in module __main__) */
Guido van Rossum3caad8c1995-03-28 09:22:53 +000027 PyRun_SimpleString("import sys\n");
28 PyRun_SimpleString("print sys.builtin_module_names\n");
29 PyRun_SimpleString("print sys.argv\n");
Guido van Rossum705d5171994-10-08 19:30:50 +000030
31 /* Note that you can call any public function of the Python
32 interpreter here, e.g. call_object(). */
33
34 /* Some more application specific code */
35 printf("\nGoodbye, cruel world\n");
36
37 /* Exit, cleaning up the interpreter */
Guido van Rossum3caad8c1995-03-28 09:22:53 +000038 Py_Exit(0);
Guido van Rossum705d5171994-10-08 19:30:50 +000039 /*NOTREACHED*/
40}
41
Guido van Rossum3caad8c1995-03-28 09:22:53 +000042/* This function is called by the interpreter to get its own name */
Guido van Rossum705d5171994-10-08 19:30:50 +000043char *
44getprogramname()
45{
46 return argv0;
47}