mirror of
https://github.com/python/cpython.git
synced 2025-08-02 16:13:13 +00:00

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.
56 lines
1.6 KiB
PowerShell
56 lines
1.6 KiB
PowerShell
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) {
|
|
copy-item function:_OLD_VIRTUAL_PROMPT function:prompt
|
|
remove-item function:_OLD_VIRTUAL_PROMPT
|
|
}
|
|
|
|
if (Test-Path env:_OLD_VIRTUAL_PYTHONHOME) {
|
|
copy-item env:_OLD_VIRTUAL_PYTHONHOME env:PYTHONHOME
|
|
remove-item env:_OLD_VIRTUAL_PYTHONHOME
|
|
}
|
|
|
|
if (Test-Path env:_OLD_VIRTUAL_PATH) {
|
|
copy-item env:_OLD_VIRTUAL_PATH env:PATH
|
|
remove-item env:_OLD_VIRTUAL_PATH
|
|
}
|
|
|
|
if (Test-Path env:VIRTUAL_ENV) {
|
|
remove-item env:VIRTUAL_ENV
|
|
}
|
|
|
|
if (!$NonDestructive) {
|
|
# Self destruct!
|
|
remove-item function:deactivate
|
|
}
|
|
}
|
|
|
|
deactivate -nondestructive
|
|
|
|
$env:VIRTUAL_ENV="__VENV_DIR__"
|
|
|
|
if (! $env:VIRTUAL_ENV_DISABLE_PROMPT) {
|
|
# Set the prompt to include the env name
|
|
# Make sure _OLD_VIRTUAL_PROMPT is global
|
|
function global:_OLD_VIRTUAL_PROMPT {""}
|
|
copy-item function:prompt function:_OLD_VIRTUAL_PROMPT
|
|
function global:prompt {
|
|
Write-Host -NoNewline -ForegroundColor Green '__VENV_PROMPT__'
|
|
_OLD_VIRTUAL_PROMPT
|
|
}
|
|
}
|
|
|
|
# Clear PYTHONHOME
|
|
if (Test-Path env:PYTHONHOME) {
|
|
copy-item env:PYTHONHOME env:_OLD_VIRTUAL_PYTHONHOME
|
|
remove-item env:PYTHONHOME
|
|
}
|
|
|
|
# Add the venv to the PATH
|
|
copy-item env:PATH env:_OLD_VIRTUAL_PATH
|
|
$env:PATH = add-bin $env:PATH
|