diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-02-06 17:14:11 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-02-06 17:14:11 +0400 |
commit | 12ef1b63e255b7387f7432d3266c33adcca5258c (patch) | |
tree | 9972341abcf9aaf60e53d46039c19ada7959de11 /source/blender | |
parent | c80db5878b799890895fca7d595c830dd63603eb (diff) |
fix for building blender as a python module,
changes to internal import behavior of py3.3 broke it.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/python/generic/idprop_py_api.c | 2 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_interface.c | 24 |
2 files changed, 25 insertions, 1 deletions
diff --git a/source/blender/python/generic/idprop_py_api.c b/source/blender/python/generic/idprop_py_api.c index f0db5358d0a..a0e2f1a0854 100644 --- a/source/blender/python/generic/idprop_py_api.c +++ b/source/blender/python/generic/idprop_py_api.c @@ -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) diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index e9fa00c7868..4f40382bdc4 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -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(); |