跳到主要内容

Python Initialization Configuration

PyWideStringList

  • PyStatus PyWideStringList_Append(PyWideStringList *list, const wchar_t *item)
  • PyStatus PyWideStringList_Insert(PyWideStringList *list, Py_ssize_t index, const wchar_t *item)

PyStatus

  • int exitcode
  • const char *err_msg
  • const char *func
  • PyStatus PyStatus_Ok(void)
  • PyStatus PyStatus_Error(const char *err_msg)
  • PyStatus PyStatus_NoMemory(void)
  • PyStatus PyStatus_Exit(int exitcode)
  • int PyStatus_Exception(PyStatus status)
  • int PyStatus_IsError(PyStatus status)
  • int PyStatus_IsExit(PyStatus status)
  • void Py_ExitStatusException(PyStatus status)

PyConfig

When done, the PyConfig_Clear() function must be used to release the configuration memory

  • void PyConfig_InitPythonConfig(PyConfig *config)
  • void PyConfig_InitIsolatedConfig(PyConfig *config)
  • PyStatus PyConfig_SetString(PyConfig *config, wchar_t *const *config_str, const wchar_t *str)
  • PyStatus PyConfig_SetBytesString(PyConfig *config, wchar_t *const *config_str, const char *str)
  • PyStatus PyConfig_SetArgv(PyConfig *config, int argc, wchar_t *const *argv)
  • PyStatus PyConfig_SetBytesArgv(PyConfig *config, int argc, char *const *argv)
  • PyStatus PyConfig_SetWideStringList(PyConfig *config, PyWideStringList *list, Py_ssize_t length, wchar_t **items)
  • PyStatus PyConfig_Read(PyConfig *config)
  • void PyConfig_Clear(PyConfig *config)

Initialization with PyConfig

  • PyStatus Py_InitializeFromConfig(const PyConfig *config)

Py_RunMain()

  • int Py_RunMain(void): Execute the command (PyConfig.run_command), the script (PyConfig.run_filename) or the module (PyConfig.run_module) specified on the command line or in the configuration

Multi-Phase Initialization Private Provisional API

  • “Core” initialization phase, “bare minimum Python”:
    • Builtin types;
    • Builtin exceptions;
    • Builtin and frozen modules;
    • The sys module is only partially initialized (ex: sys.path doesn’t exist yet).
  • “Main” initialization phase, Python is fully initialized:
    • Install and configure importlib;
    • Apply the Path Configuration;
    • Install signal handlers;
    • Finish sys module initialization (ex: create sys.stdout and sys.path);
    • Enable optional features like faulthandler and tracemalloc;
    • Import the site module;
    • etc.