Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorWillian Padovani Germano <wpgermano@gmail.com>2003-06-28 14:35:14 +0400
committerWillian Padovani Germano <wpgermano@gmail.com>2003-06-28 14:35:14 +0400
commit8155033930e204d6eff5fdddbf9dea9d7a4fc23f (patch)
tree81293405c97cacc57fa1cee0170d69964c4217e1 /source
parenteaf1cdd3836aa425e3dc6f1a11d4556bd7e3e876 (diff)
- Added user defined python dir to Python's sys.path:
Had to add a function call to creator.c, explained in a note there (look for pythondir in the file)
Diffstat (limited to 'source')
-rw-r--r--source/blender/python/BPY_extern.h1
-rw-r--r--source/blender/python/BPY_interface.c15
-rw-r--r--source/creator/creator.c9
3 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/python/BPY_extern.h b/source/blender/python/BPY_extern.h
index 977da30139f..ccf0457aa21 100644
--- a/source/blender/python/BPY_extern.h
+++ b/source/blender/python/BPY_extern.h
@@ -47,6 +47,7 @@ struct _object; // forward declaration for PyObject !
void BPY_start_python(void);
void BPY_end_python(void);
+void BPY_syspath_append_pythondir(void);
int BPY_Err_getLinenumber(void);
const char *BPY_Err_getFilename(void);
/* void BPY_Err_Handle(struct Text *text); */
diff --git a/source/blender/python/BPY_interface.c b/source/blender/python/BPY_interface.c
index 5a388b1ea0d..1b3ff468361 100644
--- a/source/blender/python/BPY_interface.c
+++ b/source/blender/python/BPY_interface.c
@@ -178,6 +178,9 @@ void init_syspath(void)
if (U.pythondir) { /* XXX not working, U.pythondir is NULL here ?!?*/
/* maybe it wasn't defined yet at this point in start-up ...*/
+ /* Update: definitely that is the reason. We need to start python
+ * after U.pythondir is defined (better after the other U.xxxx are
+ * too. */
p = Py_BuildValue("s", U.pythondir);
syspath_append(p); /* append to module search path */
}
@@ -193,6 +196,18 @@ void init_syspath(void)
}
/*****************************************************************************/
+/* Description: This function adds the user defined folder for Python */
+/* scripts to sys.path. This is done in init_syspath, too, but */
+/* when Blender's main() runs BPY_start_python(), U.pythondir */
+/* isn't set yet, so we provide this function to be executed */
+/* after U.pythondir is defined. */
+/*****************************************************************************/
+void BPY_syspath_append_pythondir(void)
+{
+ syspath_append(Py_BuildValue("s", U.pythondir));
+}
+
+/*****************************************************************************/
/* Description: This function will return the linenumber on which an error */
/* has occurred in the Python script. */
/*****************************************************************************/
diff --git a/source/creator/creator.c b/source/creator/creator.c
index d057c20068d..d17080fbdeb 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -388,6 +388,15 @@ int main(int argc, char **argv)
sound_init_audio();
BIF_init();
+
+ /**
+ * NOTE: the U.pythondir string is NULL until BIF_init() is executed,
+ * so we provide the BPY_ function below to append the user defined
+ * pythondir to Python's sys.path at this point. Simply putting
+ * BIF_init() before BPY_start_python() crashes Blender at startup.
+ */
+
+ BPY_syspath_append_pythondir();
}
else {
BPY_start_python();