embedding - PyImport_AppendInittab() after Py_Initialize()

Could anyone please clarify whether it is correct in python3.5 to call PyImport_AppendInittab() after Py_Initialize()
I found this case among the tests for boost.python https://github.com/boostorg/python/blob/develop/test/exec.cpp
And this test doesn't work for me with python3.5.An error looks like:
exec.cpp(137): Python Error detected in function 'void __cdecl check_pyerr(bool)' Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: 'embedded_hello' is not a built-in module 1 error detected.
After debugging I found out that root cause is in importlib/_bootstrap.py which do the following:
if fullname not in sys.builtin_module_names: raise ImportError('{!r} is not a built-in module'.format(fullname), name=fullname)
but sys.builtin_module_names is the constant which initialized once in Py_Initialize()
--- To summarize: Is it a bug in python3.5 or original test inside boost.python should be fixed ?

On Fri, 27 May 2016 at 07:50 Vitaly Murashev vitaly.murashev@gmail.com wrote:
Could anyone please clarify whether it is correct in python3.5 to call PyImport_AppendInittab() after Py_Initialize()
It should be called before as PyImport_AppendInittab() is shorthand for PyImport_ExtendInittab() and it says to call prior to Py_Initialize(): https://github.com/python/cpython/blob/f680b517e2701e9a3859afb62628a46eccdce... .
-Brett
I found this case among the tests for boost.python https://github.com/boostorg/python/blob/develop/test/exec.cpp
And this test doesn't work for me with python3.5.An error looks like:
exec.cpp(137): Python Error detected in function 'void __cdecl check_pyerr(bool)' Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: 'embedded_hello' is not a built-in module 1 error detected.
After debugging I found out that root cause is in importlib/_bootstrap.py which do the following:
if fullname not in sys.builtin_module_names: raise ImportError('{!r} is not a built-in
module'.format(fullname), name=fullname)
but sys.builtin_module_names is the constant which initialized once in Py_Initialize()
To summarize: Is it a bug in python3.5 or original test inside boost.python should be fixed ?
Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/brett%40python.org
participants (2)
-
Brett Cannon
-
Vitaly Murashev