diff options
author | Steve Dower <steve.dower@microsoft.com> | 2018-12-10 08:11:34 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-10 08:11:34 -0800 |
commit | b264c609853eae9dbb45c6dbee11e84ae3927e88 (patch) | |
tree | 607edf9521e3243856ee9e5804a9cf45cfef6b82 /PC/getpathp.c | |
parent | ef1fc0d031c925416d49b407518932ccbf57a0d2 (diff) | |
download | cpython-git-b264c609853eae9dbb45c6dbee11e84ae3927e88.tar.gz |
[3.7] bpo-34977: Use venv redirector instead of original python.exe on Windows (GH-11029)
Diffstat (limited to 'PC/getpathp.c')
-rw-r--r-- | PC/getpathp.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/PC/getpathp.c b/PC/getpathp.c index 599b41b1ef..1b553d53af 100644 --- a/PC/getpathp.c +++ b/PC/getpathp.c @@ -536,10 +536,16 @@ static _PyInitError get_program_full_path(const _PyCoreConfig *core_config, PyCalculatePath *calculate, _PyPathConfig *config) { + const wchar_t *pyvenv_launcher; wchar_t program_full_path[MAXPATHLEN+1]; memset(program_full_path, 0, sizeof(program_full_path)); - if (!GetModuleFileNameW(NULL, program_full_path, MAXPATHLEN)) { + /* The launcher may need to force the executable path to a + * different environment, so override it here. */ + pyvenv_launcher = _wgetenv(L"__PYVENV_LAUNCHER__"); + if (pyvenv_launcher && pyvenv_launcher[0]) { + wcscpy_s(program_full_path, MAXPATHLEN+1, pyvenv_launcher); + } else if (!GetModuleFileNameW(NULL, program_full_path, MAXPATHLEN)) { /* GetModuleFileName should never fail when passed NULL */ return _Py_INIT_ERR("Cannot determine program path"); } |