From 45217af29c7f380089af17beb48a5ea0560bbb9d Mon Sep 17 00:00:00 2001 From: Derek Keeler Date: Thu, 2 Apr 2020 12:00:21 -0700 Subject: bpo-38972: Link to instructions to change PowerShell execution policy (GH-19131) --- Doc/using/venv-create.inc | 11 +++++++++++ Lib/venv/scripts/common/Activate.ps1 | 19 +++++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Doc/using/venv-create.inc b/Doc/using/venv-create.inc index 6c6617d..c39048d 100644 --- a/Doc/using/venv-create.inc +++ b/Doc/using/venv-create.inc @@ -83,6 +83,17 @@ The command, if run with ``-h``, will show the available options:: particular note is that double-clicking ``python.exe`` in File Explorer will resolve the symlink eagerly and ignore the virtual environment. +.. note:: + On Microsoft Windows, it may be required to enable the ``Activate.ps1`` + script by setting the execution policy for the user. You can do this by + issuing the following PowerShell command: + + PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + + See `About Execution Policies + `_ + for more information. + The created ``pyvenv.cfg`` file also includes the ``include-system-site-packages`` key, set to ``true`` if ``venv`` is run with the ``--system-site-packages`` option, ``false`` otherwise. diff --git a/Lib/venv/scripts/common/Activate.ps1 b/Lib/venv/scripts/common/Activate.ps1 index 98cb1b8..b8245b1 100644 --- a/Lib/venv/scripts/common/Activate.ps1 +++ b/Lib/venv/scripts/common/Activate.ps1 @@ -1,6 +1,6 @@ <# .Synopsis -Activate a Python virtual environment for the current Powershell session. +Activate a Python virtual environment for the current PowerShell session. .Description Pushes the python executable for a virtual environment to the front of the @@ -37,6 +37,15 @@ Activates the Python virtual environment that contains the Activate.ps1 script, and prefixes the current prompt with the specified string (surrounded in parentheses) while the virtual environment is active. +.Notes +On Windows, it may be required to enable this Activate.ps1 script by setting the +execution policy for the user. You can do this by issuing the following PowerShell +command: + +PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + +For more information on Execution Policies: +ttps:/go.microsoft.com/fwlink/?LinkID=135170 #> Param( @@ -137,7 +146,7 @@ function Get-PyVenvConfig( $val = $keyval[1] # Remove extraneous quotations around a string value. - if ("'""".Contains($val.Substring(0,1))) { + if ("'""".Contains($val.Substring(0, 1))) { $val = $val.Substring(1, $val.Length - 2) } @@ -165,7 +174,8 @@ Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" # VenvExecDir if specified on the command line. if ($VenvDir) { Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" -} else { +} +else { Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") Write-Verbose "VenvDir=$VenvDir" @@ -179,7 +189,8 @@ $pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir # just use the name of the virtual environment folder. if ($Prompt) { Write-Verbose "Prompt specified as argument, using '$Prompt'" -} else { +} +else { Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" if ($pyvenvCfg -and $pyvenvCfg['prompt']) { Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" -- cgit v0.12