summaryrefslogtreecommitdiff
path: root/PC/getpathp.c
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@microsoft.com>2018-12-10 08:11:34 -0800
committerGitHub <noreply@github.com>2018-12-10 08:11:34 -0800
commitb264c609853eae9dbb45c6dbee11e84ae3927e88 (patch)
tree607edf9521e3243856ee9e5804a9cf45cfef6b82 /PC/getpathp.c
parentef1fc0d031c925416d49b407518932ccbf57a0d2 (diff)
downloadcpython-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.c8
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");
}