Skip to content

Commit

Permalink
bpo-32718: Make Activate.ps1 for venv cross-platform and available on…
Browse files Browse the repository at this point in the history
… 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.
  • Loading branch information
brettcannon authored and miss-islington committed Sep 21, 2018
1 parent db1a80e commit d64ee1a
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
9 changes: 8 additions & 1 deletion Doc/whatsnew/3.8.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
=============
Expand Down Expand Up @@ -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`,
Expand Down
Original file line number Diff line number Diff line change
@@ -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) {
Expand Down Expand Up @@ -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
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
The Activate.ps1 script from venv works with PowerShell Core 6.1 and is now
available under all operating systems.

0 comments on commit d64ee1a

Please sign in to comment.