fix for building blender as a python module,

changes to internal import behavior of py3.3 broke it.
This commit is contained in:
2013-02-06 13:14:11 +00:00
parent c80db5878b
commit 12ef1b63e2
2 changed files with 25 additions and 1 deletions

View File

@@ -1454,6 +1454,8 @@ static PyObject *BPyInit_idprop_types(void)
submodule = PyModule_Create(&IDProp_types_module_def);
IDProp_Init_Types();
#define MODULE_TYPE_ADD(s, t) \
PyModule_AddObject(s, t.tp_name, (PyObject *)&t); Py_INCREF((PyObject *)&t)

View File

@@ -310,11 +310,33 @@ void BPY_python_start(int argc, const char **argv)
(void)argv;
/* must run before python initializes */
PyImport_ExtendInittab(bpy_internal_modules);
/* broken in py3.3, load explicitly below */
// PyImport_ExtendInittab(bpy_internal_modules);
#endif
bpy_intern_string_init();
#ifdef WITH_PYTHON_MODULE
{
/* Manually load all modules */
struct _inittab *inittab_item;
PyObject *sys_modules = PyImport_GetModuleDict();
for (inittab_item = bpy_internal_modules; inittab_item->name; inittab_item++) {
PyObject *mod = inittab_item->initfunc();
if (mod) {
PyDict_SetItemString(sys_modules, inittab_item->name, mod);
}
else {
PyErr_Print();
PyErr_Clear();
}
// Py_DECREF(mod); /* ideally would decref, but in this case we never wan't to free */
}
}
#endif
/* bpy.* and lets us import it */
BPy_init_modules();