issue 9910

Add a Py_SetPath api to override magic path computations when starting up python.
This commit is contained in:
Kristján Valur Jónsson 2010-09-27 05:32:54 +00:00
parent 42ef4b1f4c
commit 3b69db27d7
4 changed files with 68 additions and 2 deletions

View file

@ -51,6 +51,9 @@
exe, some very strange installation setup) you get a path with
some default, but relative, paths.
* An embedding application can use Py_SetPath() to override all of
these authomatic path computations.
---------------------------------------------------------------- */
@ -79,6 +82,9 @@
* The approach is an adaptation for Windows of the strategy used in
* ../Modules/getpath.c; it uses the Windows Registry as one of its
* information sources.
*
* Py_SetPath() can be used to override this mechanism. Call Py_SetPath
* with a semicolon separated path prior to calling Py_Initialize.
*/
#ifndef LANDMARK
@ -654,6 +660,24 @@ calculate_path(void)
/* External interface */
void
Py_SetPath(const wchar_t *path)
{
if (module_search_path != NULL) {
free(module_search_path);
module_search_path = NULL;
}
if (path != NULL) {
extern wchar_t *Py_GetProgramName(void);
wchar_t *prog = Py_GetProgramName();
wcsncpy(progpath, prog, MAXPATHLEN);
prefix[0] = L'\0';
module_search_path = malloc((wcslen(path) + 1) * sizeof(wchar_t));
if (module_search_path != NULL)
wcscpy(module_search_path, path);
}
}
wchar_t *
Py_GetPath(void)
{