Skip to content

relocatable activate for bash, dash, zsh, ksh, fish, Windows #236

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 9 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 44 additions & 37 deletions virtualenv.py
Original file line number Diff line number Diff line change
Expand Up @@ -2229,40 +2229,46 @@ def convert(s):

##file activate.sh
ACTIVATE_SH = convert("""
eJytVVFvokAQfudXTLEPtTlLeo9tvMSmJpq02hSvl7u2wRUG2QR2DSxSe7n/frOACEVNLlceRHa+
nfl25pvZDswCnoDPQ4QoTRQsENIEPci4CsBMZBq7CAsuLOYqvmYKTTj3YxnBgiXBudGBjUzBZUJI
BXEqgCvweIyuCjeG4eF2F5x14bcB9KQiQQWrjSddI1/oQIx6SYYeoFjzWIoIhYI1izlbhJjkKO7D
M/QEmKfO9O7WeRo/zr4P7pyHwWxkwitcgwpQ5Ej96OX+PmiFwLeVjFUOrNYKaq1Nud3nR2n8nI2m
k9H0friPTGVsUdptaxGrTEfpNVFEskxpXtUkkCkl1UNF9cgLBkx48J4EXyALuBtAwNYIjF5kcmUU
abMKmMq1ULoiRbgsDEkTSsKSGFCJ6Z8vY/2xYiSacmtyAfCDdCNTVZoVF8vSTQOoEwSnOrngBkws
MYGMBMg8/bMBLSYKS7pYEXP0PqT+ZmBT0Xuy+Pplj5yn4aM9nk72JD8/Wi+Gr98sD9eWSMOwkapD
BbUv91XSvmyVkICt2tmXR4tWmrcUCsjWOpw87YidEC8i0gdTSOFhouJUNxR+4NYBG0MftoCTD9F7
2rTtxG3oPwY1b2HncYwhrlmj6Wq924xtGDWqfdNxap+OYxplEurnMVo9RWks+rH8qKEtx7kZT5zJ
4H7oOFclrN6uFe+d+nW2aIUsSgs/42EIPuOhXq+jEo3S6tX6w2ilNkDnIpHCWdEQhFgwj9pkk7FN
l/y5eQvRSIQ5+TrL05lewxWpt/Lbhes5cJF3mLET1MGhcKCF+40tNWnUulxrpojwDo2sObdje3Bz
N3QeHqf3D7OjEXMVV8LN3ZlvuzoWHqiUcNKHtwNd0IbvPGKYYM31nPKCgkUILw3KL+Y8l7aO1ArS
Ad37nIU0fCj5NE5gQCuC5sOSu+UdI2NeXg/lFkQIlFpdWVaWZRfvqGiirC9o6liJ9FXGYrSY9mI1
D/Ncozgn13vJvsznr7DnkJWXsyMH7e42ljdJ+aqNDF1bFnKWFLdj31xtaJYK6EXFgqmV/ymD/ROG
+n8O9H8f5vsGOWXsL1+1k3g=
eJytVm1v4jgQ/p5fMU0rLVQbcr2PrTiJtpxabQurwvZ0V3rBJKaxLtjZ2IHSbf/7jZ0QEhKQTrf5
AIlnPJ6XZ+bxMYxDJmHOIgqLVCqYUUglDWDFVAi2FGniU5gx7hJfsSVR1IbTeSIWMCMyPLWOYS1S
8AnnQkGScmAKApZQX0Vry+pdjW8fe+O+97U3vvF+793dXfauvnTtE8+2rIBuTEKrDT8swCflkiqI
14HwLbNwDAnVSyIKgPIlSwRfUK5gSRJGZhGVRovN4QkcDmh4eHftPd4+jL/17sypNjzDBaiQcqOp
H73cbVItNOhrLBJlFIu1zLXaJiOfs4Nu/Dm+GQ5uhvf9JmcKYc2l7baaY4XooHtVLXQyT6kpuQxF
ikkNqMJimWoC4QG8yfAzrELmhxCSJQWCfyjyxWKhxSokygAlN4Vw8UkUIWCUgBf0AOuPb3OR6I+Y
IKLyrbID8AeCSqQqFyvGX3IzFUWdIDjRyQU/JPyFSlghOkmgf9agkYbHIi5i9JwGO6m/7I2w6I7I
vv4a3XiP/YfR7XDQkHwTmpPAr7+5AV26PI2iSqr2FXR01lTJ0VmthKhYq93o7GDRcvHGhUxlI+0P
HreOHaFf6EgXbC54QKVKUt1QdMe3YxjRaA4bhaOd0x0t2nTi5ugPCzs7k7MkoRFdkkrTlXq3erbe
R5Sii9jgQKMrWTBOyxEA41i9SPhEaWuwImsrD8h5w5h+6BJ6o+G3h6v+ufOB4VSi0VA1r5Xp0q3u
+7AtGlWMXh80Guw1en3IaAleDUbf9tj8pWbny64deH8viTsy7CxpIpng57VT/tEY1h1i+hWTjvMb
sMOVSNafTU+nnEqfxBRkTHzsphnFBqTwPRVFC+662MoN6O5wIt0D7xBSEoBzhm+aIBwKn6T799NE
wfPppDXpTN4ztpi04dR1L6Q7mYAL7sundhEu2sXqUU4WFN+b2cFuI6QR0xuAYezViGsVarZjiiVp
0xbb0t2FRadzkkYGqIhip4zJmKjQKmG2a3te6dNDAqsUsHJCDQoVQyctP9CZQJrME1Hd/WG33U7H
voB4FbSNq1kjVpSa1orQrXzUlKeGVWMu9CRjvfyjpO163uXtwBv07vued56rlUmxmA5bjtEzCVdQ
ojS9rFgUwZywSK+XtaTW0inXU17PiTXg9EAcQiujHdSYIdAIX+NgaKM93xCVRvUUbbXM0Eov4Bw5
orDbhoupnitmOGzH9l7q3UOU3cqW0gAucanGTnaCrnwZFNe3o97lHRbjYXj/dXzwRMMVBT1kzfG6
hVhmAVEGR1143cM1dfWtxQL6melp0XaTissTe2oIRJ9UO+QYNMMyEiHFY/JxZkAPVziy8Avz82ue
SFh+Ccu3UBw+SsXnrrtarTpvVCFvLzvI7a4Uc7UiCXWJtuJWg3kquTjdtMaus5Pp9BkagiystA4E
2t5uzO9r+V+JmHVtScSIzO6gXTte442Fg7PIFmyN/J9yffoJV6f/eW3671empusSZuxfNrOVBA==
""")

##file activate.fish
ACTIVATE_FISH = convert("""
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
Gwdeq2n1G2wM2ww=
""")

##file activate.csh
Expand All @@ -2282,17 +2288,18 @@ def convert(s):

##file activate.bat
ACTIVATE_BAT = convert("""
eJx9UdEKgjAUfW6wfxjiIH+hEDKUFHSKLCMI7kNOEkIf9P9pTJ3OLJ/03HPPPed4Es9XS9qqwqgT
PbGKKOdXL4aAFS7A4gvAwgijuiKlqOpGlATS2NeMLE+TjJM9RkQ+SmqAXLrBo1LLIeLdiWlD6jZt
r7VNubWkndkXaxg5GO3UaOOKS6drO3luDDiO5my3iA0YAKGzPRV1ack8cOdhysI0CYzIPzjSiH5X
0QcvC8Lfaj0emsVKYF2rhL5L3fCkVjV76kShi59NHwDniAHzkgDgqBcwOgTMx+gDQQqXCw==
eJx9UcEKgkAUPLew//CQFvISnQshS0khVwkrguAd2pWCSMG69u1ta25alqdl3ryZeeNUHo455FlG
CSXFrTwKYHdRjIZDSkp5BWsTrtK1u0Sfbxw295ilaHkhnvRTBkJmp4sUgPHSw5qarOIoSWFACahP
q1SQwzp4T0Ub5LmU9YbSveRXo92W+5TsJ/2FVY1sSnp61OHisNqtp+xet71GaLjbkFcYIrB3PH1q
M1LbYJcGMQ/iyG+d/IOjgpi3Pr3K0iD8rdZNg3axCvisVUHfpXZk0quGXXei0cZfZ3vEWciRu5GP
ODELlIx97lHyADgDmTA=
""")

##file deactivate.bat
DEACTIVATE_BAT = convert("""
eJxzSE3OyFfIT0vj4spMU0hJTcvMS01RiPf3cYkP8wwKCXX0iQ8I8vcNCFHQ4FIAguLUEgUliIit
KhZlqkpcnCA1WKRsuTTxWBIZ4uHv5+Hv64piEVwU3TK4BNBCmHIcKvDb6xjigWIjkI9uF1AIu7dA
akGGW7n6uXABALCXXUI=
eJxzSE3OyFfIT0vj4ipOLVEI8wwKCXX0iXf1C7Pl4spMU0hJTcvMS01RiPf3cYmHyQYE+fsGhCho
cCkAAUibEkTEVhWLMlUlLk6QGixStlyaeCyJDPHw9/Pw93VFsQguim4ZXAJoIUw5DhX47XUM8UCx
EchHtwsohN1bILUgw61c/Vy4AJYPYm4=
""")

##file activate.ps1
Expand Down
5 changes: 4 additions & 1 deletion virtualenv_embedded/activate.bat
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
@echo off
set "VIRTUAL_ENV=__VIRTUAL_ENV__"

pushd %~dp0..
set "VIRTUAL_ENV=%CD%"
popd

if defined _OLD_VIRTUAL_PROMPT (
set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
Expand Down
2 changes: 1 addition & 1 deletion virtualenv_embedded/activate.fish
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ end
# unset irrelevant variables
deactivate nondestructive

set -gx VIRTUAL_ENV "__VIRTUAL_ENV__"
set -gx VIRTUAL_ENV (cd (dirname (status -f)); cd ..; pwd)

set -gx _OLD_VIRTUAL_PATH $PATH
set -gx PATH "$VIRTUAL_ENV/__BIN_NAME__" $PATH
Expand Down
27 changes: 27 additions & 0 deletions virtualenv_embedded/activate.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

ACTIVATE_PATH_FALLBACK="$_"

deactivate () {
unset pydoc

Expand Down Expand Up @@ -39,7 +41,32 @@ deactivate () {
# unset irrelevant variables
deactivate nondestructive

# attempt to determine VIRTUAL_ENV in relocatable way
if [ ! -z "${BASH_SOURCE:-}" ]; then
# bash
ACTIVATE_PATH="${BASH_SOURCE}"
elif [ ! -z "${DASH_SOURCE:-}" ]; then
# dash
ACTIVATE_PATH="${DASH_SOURCE}"
elif [ ! -z "${ZSH_VERSION:-}" ]; then
# zsh
ACTIVATE_PATH="$0"
elif [ ! -z "${KSH_VERSION:-}" ] || [ ! -z "${.sh.version:}" ]; then
# ksh - we have to use history, and unescape spaces before quoting
ACTIVATE_PATH="$(history -r -l -n | head -1 | sed -e 's/^[\t ]*\(\.\|source\) *//;s/\\ / /g')"
elif [ "$(basename "$ACTIVATE_PATH_FALLBACK")" == "activate.sh" ]; then
ACTIVATE_PATH="${ACTIVATE_PATH_FALLBACK}"
else
ACTIVATE_PATH=""
fi

# default to non-relocatable path
VIRTUAL_ENV="__VIRTUAL_ENV__"
if [ ! -z "${ACTIVATE_PATH:-}" ]; then
VIRTUAL_ENV="$(cd "$(dirname "${ACTIVATE_PATH}")/.."; pwd)"
fi
unset ACTIVATE_PATH
unset ACTIVATE_PATH_FALLBACK
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
Expand Down