1 | #ifndef Py_INTERNAL_PATHCONFIG_H |
2 | #define Py_INTERNAL_PATHCONFIG_H |
3 | #ifdef __cplusplus |
4 | extern "C" { |
5 | #endif |
6 | |
7 | #ifndef Py_BUILD_CORE |
8 | # error "this header requires Py_BUILD_CORE define" |
9 | #endif |
10 | |
11 | typedef struct _PyPathConfig { |
12 | /* Full path to the Python program */ |
13 | wchar_t *program_full_path; |
14 | wchar_t *prefix; |
15 | wchar_t *exec_prefix; |
16 | /* Set by Py_SetPath(), or computed by _PyConfig_InitPathConfig() */ |
17 | wchar_t *module_search_path; |
18 | /* Python program name */ |
19 | wchar_t *program_name; |
20 | /* Set by Py_SetPythonHome() or PYTHONHOME environment variable */ |
21 | wchar_t *home; |
22 | #ifdef MS_WINDOWS |
23 | /* isolated and site_import are used to set Py_IsolatedFlag and |
24 | Py_NoSiteFlag flags on Windows in read_pth_file(). These fields |
25 | are ignored when their value are equal to -1 (unset). */ |
26 | int isolated; |
27 | int site_import; |
28 | /* Set when a venv is detected */ |
29 | wchar_t *base_executable; |
30 | #endif |
31 | } _PyPathConfig; |
32 | |
33 | #ifdef MS_WINDOWS |
34 | # define _PyPathConfig_INIT \ |
35 | {.module_search_path = NULL, \ |
36 | .isolated = -1, \ |
37 | .site_import = -1} |
38 | #else |
39 | # define _PyPathConfig_INIT \ |
40 | {.module_search_path = NULL} |
41 | #endif |
42 | /* Note: _PyPathConfig_INIT sets other fields to 0/NULL */ |
43 | |
44 | PyAPI_DATA(_PyPathConfig) _Py_path_config; |
45 | #ifdef MS_WINDOWS |
46 | PyAPI_DATA(wchar_t*) _Py_dll_path; |
47 | #endif |
48 | |
49 | extern void _PyPathConfig_ClearGlobal(void); |
50 | |
51 | extern PyStatus _PyPathConfig_Calculate( |
52 | _PyPathConfig *pathconfig, |
53 | const PyConfig *config); |
54 | extern int _PyPathConfig_ComputeSysPath0( |
55 | const PyWideStringList *argv, |
56 | PyObject **path0); |
57 | extern PyStatus _Py_FindEnvConfigValue( |
58 | FILE *env_file, |
59 | const wchar_t *key, |
60 | wchar_t **value_p); |
61 | |
62 | #ifdef MS_WINDOWS |
63 | extern wchar_t* _Py_GetDLLPath(void); |
64 | #endif |
65 | |
66 | extern PyStatus _PyConfig_WritePathConfig(const PyConfig *config); |
67 | extern void _Py_DumpPathConfig(PyThreadState *tstate); |
68 | extern PyObject* _PyPathConfig_AsDict(void); |
69 | |
70 | #ifdef __cplusplus |
71 | } |
72 | #endif |
73 | #endif /* !Py_INTERNAL_PATHCONFIG_H */ |
74 | |