Message337252
Calling Py_DecodeLocale() before Py_Initialize() or _Py_InitializeCore() is broken since Python 3.7 if the C locale coercion (PEP 538) or UTF-8 mode (PEP 540) changes the encoding in the middle of _Py_InitializeCore().
I added a new phase to the Python initialization in bpo-36142, a new _PyPreConfig structure, which can be used to fix this mojibake issue.
The code for embedding Python should look like:
---
_Py_PreInitialize();
_PyCoreConfig config;
config.home = Py_DecodeLocale("/path/to/home");
_PyInitError err = _Py_InitializeFromConfig(&config);
if (_Py_INIT_FAILED(err)) {
_PyCoreConfig_Clear(&config);
_Py_ExitInitError(err);
}
/* use Python here */
Py_Finalize();
_PyCoreConfig_Clear(&config);
---
Except that there is no _Py_PreInitialize() function yet :-) |
|
Date |
User |
Action |
Args |
2019-03-06 00:53:52 | vstinner | set | recipients:
+ vstinner, ncoghlan |
2019-03-06 00:53:52 | vstinner | set | messageid: <1551833632.89.0.173170385409.issue36202@roundup.psfhosted.org> |
2019-03-06 00:53:52 | vstinner | link | issue36202 messages |
2019-03-06 00:53:52 | vstinner | create | |
|