Деактивировать pyenv в текущей оболочке

Мой.bashrc имеет это:

enable-pyenv () {
    # Load pyenv automatically by adding
    # the following to your profile:

    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
}

enable-pyenv

Что позволяет pyenv. В некоторых ситуациях я хочу (временно) отключить pyenv. Как я могу это сделать?

13 ответов

Если вы хотите использовать версию Python из вашей системы:

pyenv local system

https://github.com/pyenv/pyenv/blob/master/COMMANDS.md#pyenv-global https://github.com/pyenv/pyenv/blob/master/COMMANDS.md#pyenv-local

Чтобы деактивировать из текущей среды оболочки, попробуйте
pyenv shell --unset

Я не уверен, что это избавит от всех следов pyenv, но редактирование вашего $PATH переменная окружения, чтобы избавиться от путей, содержащих pyenv или прокладку, кажется, деактивирует pyenv. Например,

export PATH=`echo $PATH | python -c "import sys, re; print(':'.join(x for x in sys.stdin.read().strip().split(':') if not 'pyenv' in x))"`

Если вы хотите иметь возможность снова включить его, просто сохраните предыдущий $PATH так что вы можете восстановить его позже.

Попробуйте поиграть с некоторыми вариантами:

env -i bash

env -i bash -l

env -i bash --norc

env -i bash --norc --noprofile

Это не приходит без побочных эффектов, как env -i обстреливает всю вашу сессию и, таким образом, впоследствии много удобства, как $HOME ушла с водой, но так же pyenv,

Я использую это, но не уверен, что это хороший способ

      bash

Для меня в конечном итоге сработал метод грубой силы для удаления всех pyenv пути от $PATH переменная:

 PATH=`echo $PATH | tr ':' '\n' | sed '/pyenv/d' | tr '\n' ':' | sed -r 's/:$/\n/'`

Хочу pyenv предложил лучший способ сам по себе.

Ни один из опубликованных ответов не сработал для меня, но следующий сделал:

$ echo "" > /home/myusername/.pyenv/version

У меня macOS Монтерей, v12.0.1. Пророк был успешно установлен с использованием Python 3.8. Это НЕ работало с версиями 3.9. Я использую pyenv для создания виртуальной среды. Вот что я сделал:

pip3 install virtualenv

pip3 install virtualenvwrapper

brew install pyenv-virtualenv

Вам нужны эти команды, чтобы виртуальная среда работала под pyenv. Далее устанавливаем питон

pyenv install 3.8.10

Создайте окружение под названием «пророк»:

pyenv virtualenv 3.8.10 prophet

Активируйте его в своем рабочем каталоге:

pyenv local prophet

Установите 2 пакета:

pip install pystan==2.19.1.1

pip install prophet

Это сработало для меня!

это сработало для меня, чтобы деактивировать pyenv:

      #show shell variables (set) and environment/exported variables (env)
{ set; env; } | egrep -i pyenv
#unset variables and functions:
unset PYENV_ROOT PYENV_SHELL _pyenv pyenv
#remove from PATH:
PATH=$(echo $PATH | tr ':' '\n' | egrep -v pyenv | paste -sd:)

В моем случае, чтобы временно вернуться к использованию среды conda вместо pyenv, самым простым способом было переустановить переменную PATH в текущей оболочке:

  1. Проверить текущий PATH
      echo $PATH
/Users/fsk/.pyenv/shims:/Users/fsk/miniconda3/envs/polar/bin:/usr/local/mysql/bin:/opt/local/bin:...
  1. Удалить часть pyenv
      export PATH="/Users/fsk/miniconda3/envs/polar/bin:/usr/local/mysql/bin:/opt/local/bin"

Эта функция bash удаляет пути pyenv и отменяет переменные среды. (Я только что расширил шивамы sed команда, которая может не работать в системах BSD.)

      function deactivate-pyenv {

    # check that virtual environment is not currently active
    if [ ! -z ${PYENV_VIRTUAL_ENV+x} ]; then
        echo ""
        echo "Cannot proceed while virtual environment is active"
        echo ""
        return 1
    fi

     # remove pyenv paths
     export PATH=`echo $PATH | tr ':' '\n' | sed '/pyenv/d' | tr '\n' ':' | sed -r 's/:$/\n/'`        

    # unset pyenv environment variables
    unset "${!PYENV@}"

}

Пытаться pyenv deactivate, чтобы вручную отключить виртуальную среду.

Док здесь: https://github.com/yyuu/pyenv-virtualenv

Другие вопросы по тегам