1
0
mirror of https://github.com/dcarrillo/prezto.git synced 2024-12-22 16:18:00 +00:00

python: Update pyenv initialization flow per pyenv 2.0

In pyenv 2.0 onwards, it is not enough anymore to initialize pyenv in
shell by just calling `pyenv init -`. We also need to update `path` to
include pyenv shims by calling `pyenv init --path`.

Also, honor `$PYENV_ROOT` if set but, no need to set it explicitly if
not set. Instead, let the initialization script take care of that.
This commit is contained in:
Indrajit Raychaudhuri 2021-05-24 17:31:17 -05:00 committed by Indrajit Raychaudhuri
parent f0942e6dda
commit afe59b293b
2 changed files with 19 additions and 8 deletions

View File

@ -38,7 +38,9 @@ execution of `pyenv`.
Install Python versions with `pyenv install` into _`~/.pyenv/versions`_. Install Python versions with `pyenv install` into _`~/.pyenv/versions`_.
This will be loaded automatically if pyenv is installed to `$PYENV_ROOT`, This will be loaded automatically if pyenv is installed to `$PYENV_ROOT`,
_`~/.pyenv`_, or if the `pyenv` command is on the path. _`~/.pyenv`_, or if the `pyenv` command is on the path. By default, `PYENV_ROOT`
is set to _`$HOME/.pyenv`_. You can set it to an alternate location and export
it in [_`${ZDOTDIR:-$HOME}/.zshenv`_][6].
## Local Package Installation ## Local Package Installation

View File

@ -11,14 +11,21 @@
# Load dependencies. # Load dependencies.
pmodload 'helper' pmodload 'helper'
# Load manually installed pyenv into the path # Load manually installed or package manager installed pyenv into the shell
if [[ -s "${PYENV_ROOT:=$HOME/.pyenv}/bin/pyenv" ]]; then # session.
path=("$PYENV_ROOT/bin" $path) if [[ -s "${local_pyenv::=${PYENV_ROOT:-$HOME/.pyenv}/bin/pyenv}" ]] \
eval "$(pyenv init - --no-rehash zsh)" || (( $+commands[pyenv] )); then
# Load pyenv into the current python session # Ensure manually installed pyenv is added to path when present.
elif (( $+commands[pyenv] )); then [[ -s $local_pyenv ]] && path=($local_pyenv:h $path)
eval "$(pyenv init - --no-rehash zsh)"
# pyenv 2+ requires shims to be added to path before being initialized.
autoload -Uz is-at-least
if is-at-least 2 ${"$(pyenv --version 2>&1)"[(w)2]}; then
eval "$(pyenv init --path zsh)"
fi
eval "$(pyenv init - zsh)"
# Prepend PEP 370 per user site packages directory, which defaults to # Prepend PEP 370 per user site packages directory, which defaults to
# ~/Library/Python on macOS and ~/.local elsewhere, to PATH. The # ~/Library/Python on macOS and ~/.local elsewhere, to PATH. The
@ -34,6 +41,8 @@ else
fi fi
fi fi
unset local_pyenv
# Return if requirements are not found. # Return if requirements are not found.
if (( ! $#commands[(i)python[23]#] && ! $+functions[pyenv] )); then if (( ! $#commands[(i)python[23]#] && ! $+functions[pyenv] )); then
return 1 return 1