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:
parent
4f24808d08
commit
a8ca79cbe6
|
@ -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(sys.executable))
|
||||
output.write("binary path: %s\n" % prepr(bpy.app.binary_path_python))
|
||||
try:
|
||||
py_ver = prepr(subprocess.check_output([
|
||||
sys.executable,
|
||||
bpy.app.binary_path_python,
|
||||
"--version",
|
||||
]).strip())
|
||||
except Exception as e:
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue