Revert "PyAPI: point sys.executable to the Python binary"
This reverts commit 04c5471cee.
This causes Blender not to start on some systems.
This commit is contained in:
@@ -292,13 +292,36 @@ 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). "
|
||||
"Deprecated! Use ``sys.executable`` instead.");
|
||||
static PyObject *bpy_app_binary_path_python_get(PyObject *UNUSED(self), void *UNUSED(closure))
|
||||
"String, the path to the python executable (read-only)");
|
||||
static PyObject *bpy_app_binary_path_python_get(PyObject *self, void *UNUSED(closure))
|
||||
{
|
||||
PyErr_Warn(PyExc_RuntimeWarning, "Use 'sys.executable' instead of 'binary_path_python'!");
|
||||
return Py_INCREF_RET(PySys_GetObject("executable"));
|
||||
/* 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;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(bpy_app_debug_value_doc,
|
||||
|
||||
@@ -306,22 +306,12 @@ 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);
|
||||
|
||||
/* Setting the program name is important so the 'multiprocessing' module
|
||||
* can launch new Python instances. */
|
||||
/* Not essential but nice to set our name. */
|
||||
{
|
||||
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");
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
/* must run before python initializes */
|
||||
|
||||
Reference in New Issue
Block a user