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
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2009-06-01 09:43:58 +0400
committerCampbell Barton <ideasman42@gmail.com>2009-06-01 09:43:58 +0400
commit94af7242939ef8da07f63feb3d44981ca26beab5 (patch)
tree85eb0ea4db92b98df38e2d70cd3e60b1a4d7b968 /source/gameengine/Ketsji/KX_PythonInit.cpp
parente415fa27b019c1b00bdb443dbf39491de941aab1 (diff)
YoFrankie bug [#18857] On start gives ImportError: No module named frankie_scripts
GameEngine sys.path creation was broken because of a pesky slash at the end of each path name. Win32 sys.paths were also failing when running a game that switched between blend files in different directories On win32 for some reason making absolute paths from lib->name failed, work around this by using lib->filename. STR_String.h, cast to float to quiet compiler warnings.
Diffstat (limited to 'source/gameengine/Ketsji/KX_PythonInit.cpp')
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp
index ff5a37801f4..3294789249d 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInit.cpp
@@ -1508,10 +1508,12 @@ static void initPySysObjects__append(PyObject *sys_path, char *filename)
char expanded[FILE_MAXDIR + FILE_MAXFILE];
BLI_split_dirfile_basic(filename, expanded, NULL); /* get the dir part of filename only */
- BLI_convertstringcode(expanded, gp_GamePythonPath);
-
+ BLI_convertstringcode(expanded, gp_GamePythonPath); /* filename from lib->filename is (always?) absolute, so this may not be needed but it wont hurt */
+ BLI_cleanup_file(gp_GamePythonPath, expanded); /* Dont use BLI_cleanup_dir because it adds a slash - BREAKS WIN32 ONLY */
item= PyString_FromString(expanded);
+// printf("SysPath - '%s', '%s', '%s'\n", expanded, filename, gp_GamePythonPath);
+
if(PySequence_Index(sys_path, item) == -1) {
PyErr_Clear(); /* PySequence_Index sets a ValueError */
PyList_Insert(sys_path, 0, item);
@@ -1535,7 +1537,9 @@ static void initPySysObjects(Main *maggie)
Library *lib= (Library *)maggie->library.first;
while(lib) {
- initPySysObjects__append(sys_path, lib->name);
+ /* lib->name wont work in some cases (on win32),
+ * even when expanding with gp_GamePythonPath, using lib->filename is less trouble */
+ initPySysObjects__append(sys_path, lib->filename);
lib= (Library *)lib->id.next;
}
@@ -2083,6 +2087,7 @@ void pathGamePythonConfig( char *path )
void setGamePythonPath(char *path)
{
BLI_strncpy(gp_GamePythonPath, path, sizeof(gp_GamePythonPath));
+ BLI_cleanup_file(NULL, gp_GamePythonPath); /* not absolutely needed but makes resolving path problems less confusing later */
if (gp_GamePythonPathOrig[0] == '\0')
BLI_strncpy(gp_GamePythonPathOrig, path, sizeof(gp_GamePythonPathOrig));