C++程序  |  61行  |  1.17 KB

#include "Python.h"
#include "osdefs.h"

static char *prefix, *exec_prefix, *progpath, *module_search_path=NULL;

static void
calculate_path()
{
    char *pypath = getenv("Python$Path");
    if (pypath) {
        int pathlen = strlen(pypath);
        module_search_path = malloc(pathlen + 1);
        if (module_search_path)
            strncpy(module_search_path, pypath, pathlen + 1);
        else {
            fprintf(stderr,
                "Not enough memory for dynamic PYTHONPATH.\n"
                "Using default static PYTHONPATH.\n");
        }
    }
    if (!module_search_path)
        module_search_path = "<Python$Dir>.Lib";
    prefix = "<Python$Dir>";
    exec_prefix = prefix;
    progpath = Py_GetProgramName();
}

/* External interface */

char *
Py_GetPath()
{
    if (!module_search_path)
        calculate_path();
    return module_search_path;
}

char *
Py_GetPrefix()
{
    if (!module_search_path)
        calculate_path();
    return prefix;
}

char *
Py_GetExecPrefix()
{
    if (!module_search_path)
        calculate_path();
    return exec_prefix;
}

char *
Py_GetProgramFullPath()
{
    if (!module_search_path)
        calculate_path();
    return progpath;
}