Hello,
Could anyone provide any insight into what’s going wrong here?
I’m trying to activate a python virtualenv automatically when launching a new
fish shell.
Manually doing like below works correctly:
> fish
> . virtualenv/bin/activate.fish
But trying to do this via a script (or even in the fish config file) results in
an error:
The script, launch_virtualenv:
#!/usr/bin/env fish
. virtualenv/bin/activate.fish
fish
Running this outputs:
fish: Could not locate end of block. The 'end' command is missing, misspelled
or a ';' is missing.
/private/tmp/.psub.79274.21540 (line 1): function _old_fish_prompt
^
in . (source) call of file '/private/tmp/.psub.79274.21540',
called on line 9 of file '/Users/tim/virtualenv/bin/activate.fish',
in . (source) call of file '/Users/tim/virtualenv/bin/activate.fish',
called on line 9 of file '/Users/tim/launch_virtualenv',
source: Error while reading file '/private/tmp/.psub.79274.21540’
The activate.fish file looks like this. I realise it tells me it cannot be run
directly, but I don’t understand why and what’s different about sourcing it in
a file and sourcing it in the interactive shell.
# This file must be used with ". bin/activate.fish" *from fish*
(http://fishshell.org)
# you cannot run it directly
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
if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
functions -e fish_prompt
set -e _OLD_FISH_PROMPT_OVERRIDE
. ( begin
printf "function fish_prompt\n\t#"
functions _old_fish_prompt
end | psub )
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/tim/code/fa/fieldaware/fieldaware-venv"
set -gx _OLD_VIRTUAL_PATH $PATH
set -gx PATH "$VIRTUAL_ENV/bin" $PATH
# 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
. ( begin
printf "function _old_fish_prompt\n\t#"
functions fish_prompt
end | psub )
# with the original prompt function renamed, we can override with our own.
function fish_prompt
# Prompt override?
if test -n ""
printf "%s%s%s" "" (set_color normal) (_old_fish_prompt)
return
end
# ...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 %s" (set_color -b blue white) (basename (dirname
"$VIRTUAL_ENV")) (set_color normal) (_old_fish_prompt)
else
printf "%s(%s)%s%s" (set_color -b blue white) (basename
"$VIRTUAL_ENV") (set_color normal) (_old_fish_prompt)
end
end
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
end
Any tips on how I might get this working?
Cheers,
Tim
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
_______________________________________________
Fish-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fish-users