@@ -93,11 +93,14 @@ inline void precheck_interpreter() {
9393 }
9494}
9595
96+ PYBIND11_NAMESPACE_END (detail)
97+
9698#if PY_VERSION_HEX >= PYBIND11_PYCONFIG_SUPPORT_PY_VERSION_HEX
9799inline void initialize_interpreter (PyConfig *config,
98100 int argc = 0 ,
99101 const char *const *argv = nullptr ,
100102 bool add_program_dir_to_path = true ) {
103+ detail::precheck_interpreter ();
101104 PyStatus status = PyConfig_SetBytesArgv (config, argc, const_cast <char *const *>(argv));
102105 if (PyStatus_Exception (status) != 0 ) {
103106 // A failure here indicates a character-encoding failure or the python
@@ -125,6 +128,7 @@ inline void initialize_interpreter_pre_pyconfig(bool init_signal_handlers,
125128 int argc,
126129 const char *const *argv,
127130 bool add_program_dir_to_path) {
131+ detail::precheck_interpreter ();
128132 Py_InitializeEx (init_signal_handlers ? 1 : 0 );
129133
130134 // Before it was special-cased in python 3.8, passing an empty or null argv
@@ -158,8 +162,6 @@ inline void initialize_interpreter_pre_pyconfig(bool init_signal_handlers,
158162}
159163#endif
160164
161- PYBIND11_NAMESPACE_END (detail)
162-
163165/* * \rst
164166 Initialize the Python interpreter. No other pybind11 or CPython API functions can be
165167 called before this is done; with the exception of `PYBIND11_EMBEDDED_MODULE`. The
@@ -183,17 +185,15 @@ inline void initialize_interpreter(bool init_signal_handlers = true,
183185 int argc = 0 ,
184186 const char *const *argv = nullptr ,
185187 bool add_program_dir_to_path = true ) {
186- detail::precheck_interpreter ();
187188#if PY_VERSION_HEX < PYBIND11_PYCONFIG_SUPPORT_PY_VERSION_HEX
188- detail::initialize_interpreter_pre_pyconfig (
189- init_signal_handlers, argc, argv, add_program_dir_to_path);
189+ initialize_interpreter_pre_pyconfig (init_signal_handlers, argc, argv, add_program_dir_to_path);
190190#else
191191 PyConfig config;
192192 PyConfig_InitIsolatedConfig (&config);
193193 config.isolated = 0 ;
194194 config.use_environment = 1 ;
195195 config.install_signal_handlers = init_signal_handlers ? 1 : 0 ;
196- detail:: initialize_interpreter (&config, argc, argv, add_program_dir_to_path);
196+ initialize_interpreter (&config, argc, argv, add_program_dir_to_path);
197197#endif
198198}
199199
@@ -286,8 +286,7 @@ class scoped_interpreter {
286286 int argc = 0 ,
287287 const char *const *argv = nullptr ,
288288 bool add_program_dir_to_path = true ) {
289- detail::precheck_interpreter ();
290- detail::initialize_interpreter (config, argc, argv, add_program_dir_to_path);
289+ initialize_interpreter (config, argc, argv, add_program_dir_to_path);
291290 }
292291#endif
293292
0 commit comments