1#include "Python.h" 2#include "osdefs.h" 3 4static char *prefix, *exec_prefix, *progpath, *module_search_path=NULL; 5 6static void 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 30char * 31Py_GetPath() 32{ 33 if (!module_search_path) 34 calculate_path(); 35 return module_search_path; 36} 37 38char * 39Py_GetPrefix() 40{ 41 if (!module_search_path) 42 calculate_path(); 43 return prefix; 44} 45 46char * 47Py_GetExecPrefix() 48{ 49 if (!module_search_path) 50 calculate_path(); 51 return exec_prefix; 52} 53 54char * 55Py_GetProgramFullPath() 56{ 57 if (!module_search_path) 58 calculate_path(); 59 return progpath; 60} 61