Interpreter initialization and finalization¶
See Python Initialization Configuration for details on how to configure the interpreter prior to initialization.
Before Python initialization¶
In an application embedding Python, the Py_Initialize() function must
be called before using any other Python/C API functions; with the exception of
a few functions and the global configuration variables.
The following functions can be safely called before Python is initialized:
Functions that initialize the interpreter:
the runtime pre-initialization functions covered in Python Initialization Configuration
Configuration functions:
PyInitFrozenExtensions()the configuration functions covered in Python Initialization Configuration
Informative functions:
Utilities:
the status reporting and utility functions covered in Python Initialization Configuration
Memory allocators:
Synchronization:
Note
Despite their apparent similarity to some of the functions listed above,
the following functions should not be called before the interpreter has
been initialized: Py_EncodeLocale(), PyEval_InitThreads(), and
Py_RunMain().
Global configuration variables¶
Python has variables for the global configuration to control different features and options. By default, these flags are controlled by command line options.
When a flag is set by an option, the value of the flag is the number of times
that the option was set. For example, -b sets Py_BytesWarningFlag
to 1 and -bb sets Py_BytesWarningFlag to 2.
-
int Py_BytesWarningFlag¶
This API is kept for backward compatibility: setting
PyConfig.bytes_warningshould be used instead, see Python Initialization Configuration.Issue a warning when comparing
bytesorbytearraywithstrorbyteswithint. Issue an error if greater or equal to2.Set by the
-boption.Deprecated since version 3.12, removed in version 3.15.
-
int Py_DebugFlag¶
This API is kept for backward compatibility: setting
PyConfig.parser_debugshould be used instead, see Python Initialization Configuration.Turn on parser debugging output (for expert only, depending on compilation options).
Set by the
-doption and thePYTHONDEBUGenvironment variable.Deprecated since version 3.12, removed in version 3.15.
-
int Py_DontWriteBytecodeFlag¶
This API is kept for backward compatibility: setting
PyConfig.write_bytecodeshould be used instead, see Python Initialization Configuration.If set to non-zero, Python won’t try to write
.pycfiles on the import of source modules.Set by the
-Boption and thePYTHONDONTWRITEBYTECODEenvironment variable.Deprecated since version 3.12, removed in version 3.15.
-
int Py_FrozenFlag¶
This API is kept for backward compatibility: setting
PyConfig.pathconfig_warningsshould be used instead, see Python Initialization Configuration.Private flag used by
_freeze_moduleandfrozenmainprograms.Deprecated since version 3.12, removed in version 3.15.
-
int Py_HashRandomizationFlag¶
This API is kept for backward compatibility: setting
PyConfig.hash_seedandPyConfig.use_hash_seedshould be used instead, see Python Initialization Configuration.Set to
1if thePYTHONHASHSEEDenvironment variable is set to a non-empty string.If the flag is non-zero, read the
PYTHONHASHSEEDenvironment variable to initialize the secret hash seed.Deprecated since version 3.12, removed in version 3.15.
-
int Py_IgnoreEnvironmentFlag¶
This API is kept for backward compatibility: setting
PyConfig.use_environmentshould be used instead, see Python Initialization Configuration.Ignore all
PYTHON*environment variables, e.g.PYTHONPATHandPYTHONHOME, that might be set.Deprecated since version 3.12, removed in version 3.15.
-
int Py_InspectFlag¶
This API is kept for backward compatibility: setting
PyConfig.inspectshould be used instead, see Python Initialization Configuration.When a script is passed as first argument or the
-coption is used, enter interactive mode after executing the script or the command, even whensys.stdindoes not appear to be a terminal.Set by the
-ioption and thePYTHONINSPECTenvironment variable.Deprecated since version 3.12, removed in version 3.15.
-
int Py_InteractiveFlag¶
This API is kept for backward compatibility: setting
PyConfig.interactiveshould be used instead, see Python Initialization Configuration.Set by the
-ioption.Deprecated since version 3.12, removed in version 3.15.
-
int Py_IsolatedFlag¶
This API is kept for backward compatibility: setting
PyConfig.isolatedshould be used instead, see Python Initialization Configuration.Run Python in isolated mode. In isolated mode
sys.pathcontains neither the script’s directory nor the user’s site-packages directory.Set by the
-Ioption.Added in version 3.4.
Deprecated since version 3.12, removed in version 3.15.
-
int Py_LegacyWindowsFSEncodingFlag¶
This API is kept for backward compatibility: setting
PyPreConfig.legacy_windows_fs_encodingshould be used instead, see Python Initialization Configuration.If the flag is non-zero, use the
mbcsencoding withreplaceerror handler, instead of the UTF-8 encoding withsurrogatepasserror handler, for the filesystem encoding and error handler.Set to
1if thePYTHONLEGACYWINDOWSFSENCODINGenvironment variable is set to a non-empty string.See PEP 529 for more details.
Availability: Windows.
Deprecated since version 3.12, removed in version 3.15.
-
int Py_LegacyWindowsStdioFlag¶
This API is kept for backward compatibility: setting
PyConfig.legacy_windows_stdioshould be used instead, see Python Initialization Configuration.If the flag is non-zero, use
io.FileIOinstead ofio._WindowsConsoleIOforsysstandard streams.Set to
1if thePYTHONLEGACYWINDOWSSTDIOenvironment variable is set to a non-empty string.See PEP 528 for more details.
Availability: Windows.
Deprecated since version 3.12, removed in version 3.15.
-
int Py_NoSiteFlag¶
This API is kept for backward compatibility: setting
PyConfig.site_importshould be used instead, see Python Initialization Configuration.Disable the import of the module
siteand the site-dependent manipulations ofsys.paththat it entails. Also disable these manipulations ifsiteis explicitly imported later (callsite.main()if you want them to be triggered).Set by the
-Soption.Deprecated since version 3.12, removed in version 3.15.
-
int Py_NoUserSiteDirectory¶
This API is kept for backward compatibility: setting
PyConfig.user_site_directoryshould be used instead, see Python Initialization Configuration.Don’t add the
user site-packages directorytosys.path.Set by the
-sand-Ioptions, and thePYTHONNOUSERSITEenvironment variable.Deprecated since version 3.12, removed in version 3.15.
-
int Py_OptimizeFlag¶
This API is kept for backward compatibility: setting
PyConfig.optimization_levelshould be used instead, see Python Initialization Configuration.Set by the
-Ooption and thePYTHONOPTIMIZEenvironment variable.Deprecated since version 3.12, removed in version 3.15.
-
int Py_QuietFlag¶
This API is kept for backward compatibility: setting
PyConfig.quietshould be used instead, see Python Initialization Configuration.Don’t display the copyright and version messages even in interactive mode.
Set by the
-qoption.Added in version 3.2.
Deprecated since version 3.12, removed in version 3.15.
-
int Py_UnbufferedStdioFlag¶
This API is kept for backward compatibility: setting
PyConfig.buffered_stdioshould be used instead, see Python Initialization Configuration.Force the stdout and stderr streams to be unbuffered.
Set by the
-uoption and thePYTHONUNBUFFEREDenvironment variable.Deprecated since version 3.12, removed in version 3.15.
-
int Py_VerboseFlag¶
This API is kept for backward compatibility: setting
PyConfig.verboseshould be used instead, see Python Initialization Configuration.Print a message each time a module is initialized, showing the place (filename or built-in module) from which it is loaded. If greater or equal to
2, print a message for each file that is checked for when searching for a module. Also provides information on module cleanup at exit.Set by the
-voption and thePYTHONVERBOSEenvironment variable.Deprecated since version 3.12, removed in version 3.15.
Initializing and finalizing the interpreter¶
-
void Py_Initialize()¶
- Part of the Stable ABI.
Initialize the Python interpreter. In an application embedding Python, this should be called before using any other Python/C API functions; see Before Python Initialization for the few exceptions.
This initializes the table of loaded modules (
sys.modules), and creates the fundamental modulesbuiltins,__main__andsys. It also initializes the module search path (sys.path). It does not setsys.argv; use the Python Initialization Configuration API for that. This is a no-op when called for a second time (without calling