1 #include "Python.h" 2 #include "osdefs.h" 3 4 static char *prefix, *exec_prefix, *progpath, *module_search_path=NULL; 5 6 static void calculate_path()7calculate_path() 8 { 9 char *pypath = getenv("Python$Path"); 10 if (pypath) { 11 int pathlen = strlen(pypath); 12 module_search_path = malloc(pathlen + 1); 13 if (module_search_path) 14 strncpy(module_search_path, pypath, pathlen + 1); 15 else { 16 fprintf(stderr, 17 "Not enough memory for dynamic PYTHONPATH.\n" 18 "Using default static PYTHONPATH.\n"); 19 } 20 } 21 if (!module_search_path) 22 module_search_path = "<Python$Dir>.Lib"; 23 prefix = "<Python$Dir>"; 24 exec_prefix = prefix; 25 progpath = Py_GetProgramName(); 26 } 27 28 /* External interface */ 29 30 char * Py_GetPath()31Py_GetPath() 32 { 33 if (!module_search_path) 34 calculate_path(); 35 return module_search_path; 36 } 37 38 char * Py_GetPrefix()39Py_GetPrefix() 40 { 41 if (!module_search_path) 42 calculate_path(); 43 return prefix; 44 } 45 46 char * Py_GetExecPrefix()47Py_GetExecPrefix() 48 { 49 if (!module_search_path) 50 calculate_path(); 51 return exec_prefix; 52 } 53 54 char * Py_GetProgramFullPath()55Py_GetProgramFullPath() 56 { 57 if (!module_search_path) 58 calculate_path(); 59 return progpath; 60 } 61