Деактивировать 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
,
Для меня в конечном итоге сработал метод грубой силы для удаления всех pyenv
пути от $PATH
переменная:
PATH=`echo $PATH | tr ':' '\n' | sed '/pyenv/d' | tr '\n' ':' | sed -r 's/:$/\n/'`
Хочу pyenv
предложил лучший способ сам по себе.
Ни один из опубликованных ответов не сработал для меня, но следующий сделал:
$ echo "" > /home/myusername/.pyenv/version
pyenv shell system
У меня 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 в текущей оболочке:
- Проверить текущий PATH
echo $PATH
/Users/fsk/.pyenv/shims:/Users/fsk/miniconda3/envs/polar/bin:/usr/local/mysql/bin:/opt/local/bin:...
- Удалить часть 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