Merge branch 'blender-v2.91-release'

This commit is contained in:
Campbell Barton 2020-10-28 11:52:15 +11:00
commit 9dac5456b9
3 changed files with 22 additions and 35 deletions

View File

@ -82,10 +82,10 @@ def write_sysinfo(filepath):
output.write("\t%r\n" % p)
output.write(title("Python (External Binary)"))
output.write("binary path: %s\n" % prepr(bpy.app.binary_path_python))
output.write("binary path: %s\n" % prepr(sys.executable))
try:
py_ver = prepr(subprocess.check_output([
bpy.app.binary_path_python,
sys.executable,
"--version",
]).strip())
except Exception as e:

View File

@ -295,36 +295,13 @@ static int bpy_app_global_flag_set__only_disable(PyObject *UNUSED(self),
return bpy_app_global_flag_set(NULL, value, closure);
}
#define BROKEN_BINARY_PATH_PYTHON_HACK
PyDoc_STRVAR(bpy_app_binary_path_python_doc,
"String, the path to the python executable (read-only)");
static PyObject *bpy_app_binary_path_python_get(PyObject *self, void *UNUSED(closure))
"String, the path to the python executable (read-only). "
"Deprecated! Use ``sys.executable`` instead.");
static PyObject *bpy_app_binary_path_python_get(PyObject *UNUSED(self), void *UNUSED(closure))
{
/* refcount is held in BlenderAppType.tp_dict */
static PyObject *ret = NULL;
if (ret == NULL) {
/* only run once */
char fullpath[1024];
BKE_appdir_program_python_search(
fullpath, sizeof(fullpath), PY_MAJOR_VERSION, PY_MINOR_VERSION);
ret = PyC_UnicodeFromByte(fullpath);
#ifdef BROKEN_BINARY_PATH_PYTHON_HACK
Py_INCREF(ret);
UNUSED_VARS(self);
#else
PyDict_SetItem(
BlenderAppType.tp_dict,
/* XXX BAAAADDDDDD! self is not a PyDescr at all! it's bpy.app!!! */ PyDescr_NAME(self),
ret);
#endif
}
else {
Py_INCREF(ret);
}
return ret;
PyErr_Warn(PyExc_RuntimeWarning, "Use 'sys.executable' instead of 'binary_path_python'!");
return Py_INCREF_RET(PySys_GetObject("executable"));
}
PyDoc_STRVAR(bpy_app_debug_value_doc,

View File

@ -306,12 +306,22 @@ void BPY_python_start(bContext *C, int argc, const char **argv)
PyThreadState *py_tstate = NULL;
const char *py_path_bundle = BKE_appdir_folder_id(BLENDER_SYSTEM_PYTHON, NULL);
/* Not essential but nice to set our name. */
/* Setting the program name is important so the 'multiprocessing' module
* can launch new Python instances. */
{
const char *program_path = BKE_appdir_program_path();
wchar_t program_path_wchar[FILE_MAX];
BLI_strncpy_wchar_from_utf8(program_path_wchar, program_path, ARRAY_SIZE(program_path_wchar));
Py_SetProgramName(program_path_wchar);
char program_path[FILE_MAX];
if (BKE_appdir_program_python_search(
program_path, sizeof(program_path), PY_MAJOR_VERSION, PY_MINOR_VERSION)) {
wchar_t program_path_wchar[FILE_MAX];
BLI_strncpy_wchar_from_utf8(
program_path_wchar, program_path, ARRAY_SIZE(program_path_wchar));
Py_SetProgramName(program_path_wchar);
}
else {
fprintf(stderr,
"Unable to find the python binary, "
"the multiprocessing module may not be functional!\n");
}
}
/* must run before python initializes */