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.
This commit is contained in:
Brett Cannon 2018-09-21 15:27:26 -07:00 committed by Miss Islington (bot)
parent db1a80e97a
commit d64ee1a5ba
3 changed files with 16 additions and 2 deletions

View File

@ -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`,

View File

@ -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

View File

@ -0,0 +1,2 @@
The Activate.ps1 script from venv works with PowerShell Core 6.1 and is now
available under all operating systems.