PyAPI: set sys.executable to None when Python can't be found

Without this, sys.executable may be set to Blender's
executable instead.
This commit is contained in:
Campbell Barton 2020-11-01 18:12:26 +11:00
parent 4158b7f674
commit 276d19f63b
1 changed files with 3 additions and 1 deletions

View File

@ -361,17 +361,19 @@ void BPY_python_start(bContext *C, int argc, const char **argv)
/* Setting the program name is important so the 'multiprocessing' module
* can launch new Python instances. */
{
const char *sys_variable = "executable";
char program_path[FILE_MAX];
if (BKE_appdir_program_python_search(
program_path, sizeof(program_path), PY_MAJOR_VERSION, PY_MINOR_VERSION)) {
PyObject *py_program_path = PyC_UnicodeFromByte(program_path);
PySys_SetObject("executable", py_program_path);
PySys_SetObject(sys_variable, py_program_path);
Py_DECREF(py_program_path);
}
else {
fprintf(stderr,
"Unable to find the python binary, "
"the multiprocessing module may not be functional!\n");
PySys_SetObject(sys_variable, Py_None);
}
}