[Python-checkins] bpo-32718: Make Activate.ps1 for venv cross-platform and available on all platforms (GH-9321)

Miss Islington (bot) webhook-mailer at python.org
Fri Sep 21 18:27:31 EDT 2018


https://github.com/python/cpython/commit/d64ee1a5ba2007ae5fe085dd3495013d940a51bb
commit: d64ee1a5ba2007ae5fe085dd3495013d940a51bb
branch: master
author: Brett Cannon <brettcannon at users.noreply.github.com>
committer: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
date: 2018-09-21T15:27:26-07:00
summary:

bpo-32718: Make Activate.ps1 for venv cross-platform and available on all platforms (GH-9321)



PowerShell Core 6.1 is the cross-platform port of Windows PowerShell. This change updates Activate.ps1 to not make Windows assumptions as well as installing it into the bin/Scripts directory on all operating systems.

Requires PowerShell Core 6.1 for proper readline support once the shell has been activated for the virtual environment.

files:
A Lib/venv/scripts/common/Activate.ps1
A Misc/NEWS.d/next/Library/2018-09-14-12-38-49.bpo-32718.ICYQbt.rst
D Lib/venv/scripts/nt/Activate.ps1
M Doc/whatsnew/3.8.rst

diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst
index 1c129a704429..26928fbd55c0 100644
--- a/Doc/whatsnew/3.8.rst
+++ b/Doc/whatsnew/3.8.rst
@@ -136,6 +136,13 @@ pathlib
 contain characters unrepresentable at the OS level.
 (Contributed by Serhiy Storchaka in :issue:`33721`.)
 
+venv
+----
+
+* :mod:`venv` now includes an ``Activate.ps1`` script on all platforms for
+  activating virtual environments under PowerShell Core 6.1.
+  (Contributed by Brett Cannon in :issue:`32718`.)
+
 
 Optimizations
 =============
@@ -321,7 +328,7 @@ CPython bytecode changes
 
 * The interpreter loop  has been simplified by moving the logic of unrolling
   the stack of blocks into the compiler.  The compiler emits now explicit
-  instructions for adjusting the stack of values and calling the cleaning
+  instructions for adjusting the stack of values and calling the cleaning-
   up code for :keyword:`break`, :keyword:`continue` and :keyword:`return`.
 
   Removed opcodes :opcode:`BREAK_LOOP`, :opcode:`CONTINUE_LOOP`,
diff --git a/Lib/venv/scripts/nt/Activate.ps1 b/Lib/venv/scripts/common/Activate.ps1
similarity index 86%
rename from Lib/venv/scripts/nt/Activate.ps1
rename to Lib/venv/scripts/common/Activate.ps1
index bf60869e552e..de22962630aa 100644
--- a/Lib/venv/scripts/nt/Activate.ps1
+++ b/Lib/venv/scripts/common/Activate.ps1
@@ -1,3 +1,8 @@
+function Script:add-bin([string]$envPath) {
+    $binPath = Join-Path -Path $env:VIRTUAL_ENV -ChildPath '__VENV_BIN_NAME__'
+    return ($binPath, $envPath) -join [IO.Path]::PathSeparator
+}
+
 function global:deactivate ([switch]$NonDestructive) {
     # Revert to original values
     if (Test-Path function:_OLD_VIRTUAL_PROMPT) {
@@ -48,4 +53,4 @@ if (Test-Path env:PYTHONHOME) {
 
 # Add the venv to the PATH
 copy-item env:PATH env:_OLD_VIRTUAL_PATH
-$env:PATH = "$env:VIRTUAL_ENV\__VENV_BIN_NAME__;$env:PATH"
+$env:PATH = add-bin $env:PATH
diff --git a/Misc/NEWS.d/next/Library/2018-09-14-12-38-49.bpo-32718.ICYQbt.rst b/Misc/NEWS.d/next/Library/2018-09-14-12-38-49.bpo-32718.ICYQbt.rst
new file mode 100644
index 000000000000..b60106a003d3
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-09-14-12-38-49.bpo-32718.ICYQbt.rst
@@ -0,0 +1,2 @@
+The Activate.ps1 script from venv works with PowerShell Core 6.1 and is now
+available under all operating systems.



More information about the Python-checkins mailing list