Last active
July 10, 2020 17:43
-
-
Save karolyi/99b5634d4f0a297c47cd1c75de4a603c to your computer and use it in GitHub Desktop.
Set PYTHONEXECUTABLE for OSX/DARWIN Homebrew Python venv
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org) | |
# you cannot run it directly | |
# --- $PYTHONEXECUTABLE SETTING: See https://stackoverflow.com/a/53190037/1067833 --- | |
function deactivate -d "Exit virtualenv and return to normal shell environment" | |
# reset old environment variables | |
if test -n "$_OLD_VIRTUAL_PATH" | |
set -gx PATH $_OLD_VIRTUAL_PATH | |
set -e _OLD_VIRTUAL_PATH | |
end | |
if test -n "$_OLD_VIRTUAL_PYTHONHOME" | |
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME | |
set -e _OLD_VIRTUAL_PYTHONHOME | |
end | |
## UNSET PYTHONEXECUTABLE FOR DARWIN | |
set -gx PYTHONEXECUTABLE $_OLD_PYTHONEXECUTABLE | |
set -e _OLD_PYTHONEXECUTABLE | |
if test -n "$_OLD_FISH_PROMPT_OVERRIDE" | |
functions -e fish_prompt | |
set -e _OLD_FISH_PROMPT_OVERRIDE | |
functions -c _old_fish_prompt fish_prompt | |
functions -e _old_fish_prompt | |
end | |
set -e VIRTUAL_ENV | |
if test "$argv[1]" != "nondestructive" | |
# Self destruct! | |
functions -e deactivate | |
end | |
end | |
# unset irrelevant variables | |
deactivate nondestructive | |
set -gx VIRTUAL_ENV "/Users/karolyi/Work/private/ksol-erp/venv" | |
set -gx _OLD_VIRTUAL_PATH $PATH | |
set -gx PATH "$VIRTUAL_ENV/bin" $PATH | |
## SET PYTHONEXECUTABLE FOR DARWIN | |
set -gx _OLD_PYTHONEXECUTABLE $PYTHONEXECUTABLE | |
set -gx PYTHONEXECUTABLE "$VIRTUAL_ENV/bin/python" | |
# unset PYTHONHOME if set | |
if set -q PYTHONHOME | |
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME | |
set -e PYTHONHOME | |
end | |
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" | |
# fish uses a function instead of an env var to generate the prompt. | |
# save the current fish_prompt function as the function _old_fish_prompt | |
functions -c fish_prompt _old_fish_prompt | |
# with the original prompt function renamed, we can override with our own. | |
function fish_prompt | |
# Save the return status of the last command | |
set -l old_status $status | |
# Prompt override? | |
if test -n "(venv) " | |
printf "%s%s" "(venv) " (set_color normal) | |
else | |
# ...Otherwise, prepend env | |
set -l _checkbase (basename "$VIRTUAL_ENV") | |
if test $_checkbase = "__" | |
# special case for Aspen magic directories | |
# see http://www.zetadev.com/software/aspen/ | |
printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) | |
else | |
printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) | |
end | |
end | |
# Restore the return status of the previous command. | |
echo "exit $old_status" | . | |
_old_fish_prompt | |
end | |
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment