summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@microsoft.com>2019-01-25 14:59:58 -0800
committerGitHub <noreply@github.com>2019-01-25 14:59:58 -0800
commitadad9e68013aac166c84ffe4e23f3a5464f41840 (patch)
tree0fbd69baff9c1eb60a6f63f5fa4b499fb27b4f73
parent4e02f8f8b4baab63f927cfd87b401200ba2969e9 (diff)
downloadcpython-git-adad9e68013aac166c84ffe4e23f3a5464f41840.tar.gz
bpo-35811: Avoid propagating venv settings when launching via py.exe (GH-11677)
-rw-r--r--Misc/NEWS.d/next/Windows/2019-01-25-12-46-36.bpo-35811.2hU-mm.rst1
-rw-r--r--PC/launcher.c11
2 files changed, 12 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/Windows/2019-01-25-12-46-36.bpo-35811.2hU-mm.rst b/Misc/NEWS.d/next/Windows/2019-01-25-12-46-36.bpo-35811.2hU-mm.rst
new file mode 100644
index 0000000000..3207c955bf
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2019-01-25-12-46-36.bpo-35811.2hU-mm.rst
@@ -0,0 +1 @@
+Avoid propagating venv settings when launching via py.exe
diff --git a/PC/launcher.c b/PC/launcher.c
index 4c620dab7c..a78620a892 100644
--- a/PC/launcher.c
+++ b/PC/launcher.c
@@ -1707,6 +1707,17 @@ process(int argc, wchar_t ** argv)
command = skip_me(GetCommandLineW());
debug(L"Called with command line: %ls\n", command);
+#if !defined(VENV_REDIRECT)
+ /* bpo-35811: The __PYVENV_LAUNCHER__ variable is used to
+ * override sys.executable and locate the original prefix path.
+ * However, if it is silently inherited by a non-venv Python
+ * process, that process will believe it is running in the venv
+ * still. This is the only place where *we* can clear it (that is,
+ * when py.exe is being used to launch Python), so we do.
+ */
+ SetEnvironmentVariableW(L"__PYVENV_LAUNCHER__", NULL);
+#endif
+
#if defined(SCRIPT_WRAPPER)
/* The launcher is being used in "script wrapper" mode.
* There should therefore be a Python script named <exename>-script.py in