The Very High Level Layer
The functions in this chapter will let you execute Python source code given in a
file or a buffer, but they will not let you interact in a more detailed way with
the interpreter.
Several of these functions accept a start symbol from the grammar as a
parameter. The available start symbols are Py_eval_input,
Py_file_input, and Py_single_input. These are described
following the functions which accept them as parameters.
Note also that several of these functions take FILE* parameters. One
particular issue which needs to be handled carefully is that the FILE
structure for different C libraries can be different and incompatible. Under
Windows (at least), it is possible for dynamically linked extensions to actually
use different libraries, so care should be taken that FILE* parameters
are only passed to these functions if it is certain that they were created by
the same library that the Python runtime is using.
-
int Py_Main(int argc, char **argv)
The main program for the standard interpreter. This is made available for
programs which embed Python. The argc and argv parameters should be
prepared exactly as those which are passed to a C program’s main()
function. It is important to note that the argument list may be modified (but
the contents of the strings pointed to by the argument list are not). The return
value will be `0` if the interpreter exits normally (ie, without an
exception), 1 if the interpreter exits due to an exception, or 2
if the parameter list does not represent a valid Python command line.
Note that if an otherwise unhandled SystemExit is raised, this
function will not return 1, but exit the process, as long as
Py_InspectFlag is not set.
-
int PyRun_AnyFile(FILE *fp, const char *filename)
- This is a simplified interface to PyRun_AnyFileExFlags() below, leaving
closeit set to 0 and flags set to NULL.
-
int PyRun_AnyFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
- This is a simplified interface to PyRun_AnyFileExFlags() below, leaving
the closeit argument set to 0.
-
int PyRun_AnyFileEx(FILE *fp, const char *filename, int closeit)
- This is a simplified interface to PyRun_AnyFileExFlags() below, leaving
the flags argument set to NULL.
-
int PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)
- If fp refers to a file associated with an interactive device (console or
terminal input or Unix pseudo-terminal), return the value of
PyRun_InteractiveLoop(), otherwise return the result of
PyRun_SimpleFile(). If filename is NULL, this function uses
"???" as the filename.
-
int PyRun_SimpleString(const char *command)
- This is a simplified interface to PyRun_SimpleStringFlags() below,
leaving the PyCompilerFlags* argument set to NULL.
-
int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)
Executes the Python source code from command in the __main__ module
according to the flags argument. If __main__ does not already exist, it
is created. Returns 0 on success or -1 if an exception was raised. If
there was an error, there is no way to get the exception information. For the
meaning of flags, see below.
Note that if an otherwise unhandled SystemExit is raised, this
function will not return -1, but exit the process, as long as
Py_InspectFlag is not set.
-
int PyRun_SimpleFile(FILE *fp, const char *filename)
- This is a simplified interface to PyRun_SimpleFileExFlags() below,
leaving closeit set to 0 and flags set to NULL.
-
int PyRun_SimpleFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
- This is a simplified interface to PyRun_SimpleFileExFlags() below,
leaving closeit set to 0.
-
int PyRun_SimpleFileEx(FILE *fp, const char *filename, int closeit)
- This is a simplified interface to PyRun_SimpleFileExFlags() below,
leaving flags set to NULL.
-
int PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)
- Similar to PyRun_SimpleStringFlags(), but the Python source code is read
from fp instead of an in-memory string. filename should be the name of the
file. If closeit is true, the file is closed before PyRun_SimpleFileExFlags
returns.
-
int PyRun_InteractiveOne(FILE *fp, const char *filename)
- This is a simplified interface to PyRun_InteractiveOneFlags() below,
leaving flags set to NULL.
-
int PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
- Read and execute a single statement from a file associated with an
interactive device according to the flags argument. The user will be
prompted using sys.ps1 and sys.ps2. Returns 0 when the input was
executed successfully, -1 if there was an exception, or an error code
from the errcode.h include file distributed as part of Python if
there was a parse error. (Note that errcode.h is not included by
Python.h, so must be included specifically if needed.)
-
int PyRun_InteractiveLoop(FILE *fp, const char *filename)