18.11.17 16:17, Nick Coghlan пише: > On 18 November 2017 at 10:01, Victor Stinner <victor.stinner at gmail.com> wrote: >> I'm writing this email to ask if this change is an issue or not to >> embedded Python and the Python C API. Is it still possible to call >> "all" functions of the C API before calling Py_Initialize()? > > It isn't technically permitted to call any of them, unless their > documentation specifically says that calling them before > `Py_Initialize` is permitted (and that permission is only given for a > select few configuration APIs in > https://docs.python.org/3/c-api/init.html). The Py_Initialize() is not complete. It mentions only Py_SetProgramName(), Py_SetPythonHome() and Py_SetPath(). But in other places it is documented that Py_SetStandardStreamEncoding(), PyImport_AppendInittab(), PyImport_ExtendInittab() should be called before Py_Initialize(). And the embedding examples call Py_DecodeLocale() before Py_Initialize(). PyMem_RawMalloc(), PyMem_RawFree() and PyInitFrozenExtensions() are called before Py_Initialize() in Py_FrozenMain(). Also these functions call _PyMem_RawStrdup(). Hence, the minimal set of functions that can be called before Py_Initialize() is: * Py_SetProgramName() * Py_SetPythonHome() * Py_SetPath() * Py_SetStandardStreamEncoding() * PyImport_AppendInittab() * PyImport_ExtendInittab() * Py_DecodeLocale() * PyMem_RawMalloc() * PyMem_RawFree() * PyInitFrozenExtensions()
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4