Browse Source

pyenv: search the pyenv command if not found (#6811)

Marc Cornellà 6 years ago
parent
commit
0aa645f803
1 changed files with 25 additions and 1 deletions
  1. 25 1
      plugins/pyenv/pyenv.plugin.zsh

+ 25 - 1
plugins/pyenv/pyenv.plugin.zsh

@@ -1,7 +1,29 @@
 # This plugin loads pyenv into the current shell and provides prompt info via
 # the 'pyenv_prompt_info' function. Also loads pyenv-virtualenv if available.
 
-if (( $+commands[pyenv] )); then
+FOUND_PYENV=$+commands[pyenv]
+
+if [[ $FOUND_PYENV -ne 1 ]]; then
+    pyenvdirs=("$HOME/.pyenv" "/usr/local/pyenv" "/opt/pyenv")
+    for dir in $pyenvdirs; do
+        if [[ -d $dir/bin ]]; then
+            export PATH="$PATH:$dir/bin"
+            FOUND_PYENV=1
+            break
+        fi
+    done
+fi
+
+if [[ $FOUND_PYENV -ne 1 ]]; then
+    if (( $+commands[brew] )) && dir=$(brew --prefix pyenv 2>/dev/null); then
+        if [[ -d $dir/bin ]]; then
+            export PATH="$PATH:$dir/bin"
+            FOUND_PYENV=1
+        fi
+    fi
+fi
+
+if [[ $FOUND_PYENV -eq 1 ]]; then
     eval "$(pyenv init - zsh)"
     if (( $+commands[pyenv-virtualenv-init] )); then
         eval "$(pyenv virtualenv-init - zsh)"
@@ -15,3 +37,5 @@ else
         echo "system: $(python -V 2>&1 | cut -f 2 -d ' ')"
     }
 fi
+
+unset FOUND_PYENV dir