1
0
mirror of https://github.com/pyenv/pyenv.git synced 2025-11-17 07:43:46 -05:00

Simplify init scheme; update & clarify the README

Now the setup is to add to both rc and profile:
1) set PYENV_ROOT
   (can do it unconditionally -- since if you change it,
   you need to update all places anyway since any of them can be run first)
2) Add `pyenv` to PATH if not already there
3) eval "$(pyenv init -)"

Not a breaking change, old setup will continue to work.
This commit is contained in:
Ivan Pozdeev
2022-04-04 01:08:49 +03:00
parent 32a86a84c0
commit 8439f8e187
4 changed files with 391 additions and 338 deletions

View File

@@ -61,6 +61,7 @@ function main() {
;;
"print")
init_dirs
print_path
print_env
print_completion
print_shell_function
@@ -74,7 +75,12 @@ function main() {
function help_() {
case "$shell" in
bash )
profile='~/.bash_profile'
if [ -e '~/.bash_profile' ]; then
profile='~/.bash_profile'
else
profile='~/.profile'
fi
profile_explain="~/.bash_profile if it exists, otherwise ~/.profile"
rc='~/.bashrc'
;;
zsh )
@@ -92,10 +98,39 @@ function help_() {
esac
{
case "$shell" in
fish )
echo "# Add pyenv executable to PATH by running"
echo "# the following interactively:"
echo
echo 'set -Ux PYENV_ROOT $HOME/.pyenv'
echo 'set -U fish_user_paths $PYENV_ROOT/bin $fish_user_paths'
echo
echo "# Load pyenv automatically by appending"
echo "# the following to ~/.config/fish/config.fish:"
echo
echo 'pyenv init - | source'
echo
;;
* )
echo '# Load pyenv automatically by appending'
echo -n "# the following to "
if [ "$profile" == "$rc" ]; then
echo "$profile :"
else
echo
echo "${profile_explain:-$profile} (for login shells)"
echo "and $rc (for interactive shells) :"
fi
echo
echo 'export PYENV_ROOT="$HOME/.pyenv"'
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"'
echo 'eval "$(pyenv init -)"'
;;
esac
echo
echo '# Restart your shell for the changes to take effect.'
echo
echo '# See the README for instructions on how to set up'
echo '# your shell environment for Pyenv.'
echo
} >&2
}
@@ -104,13 +139,15 @@ function init_dirs() {
}
function print_path() {
# Need to use the login shell rather than the current one
case "$shell" in
fish )
echo "set -gx PATH '${PYENV_ROOT}/shims' \$PATH"
echo 'while set index (contains -i -- '\'"${PYENV_ROOT}/shims"\'' $PATH)'
echo 'set -eg PATH[$index]; end; set -e index'
echo 'set -gx PATH '\'"${PYENV_ROOT}/shims"\'' $PATH'
;;
* )
echo 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"'
echo 'PATH="$(bash -ec '\''IFS=:; paths=($PATH); for i in ${!paths[@]}; do if [[ ${paths[i]} == "'\'"${PYENV_ROOT}/shims"\''" ]]; then unset '\'\\\'\''paths[i]'\'\\\'\''; fi; done; echo "${paths[*]}"'\'')"'
echo 'export PATH="'"${PYENV_ROOT}"'/shims:${PATH}"'
;;
esac
}