我的.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。我怎么能这样做?
答案 0 :(得分:3)
我不确定这会消除pyenv的所有痕迹,但是编辑你的$PATH
环境变量以摆脱包含pyenv或shim的路径似乎会停用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
,以便稍后恢复。
答案 1 :(得分:3)
如果要使用系统中的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
答案 2 :(得分:2)
要从当前 shell 环境中停用,请尝试
pyenv shell --unset
答案 3 :(得分:0)
尝试使用以下的一些变体:
env -i bash
env -i bash -l
env -i bash --norc
env -i bash --norc --noprofile
这并非没有副作用,因为env -i
会影响你的整个会话,因此像$HOME
这样的许多便利已经消失了,但pyenv
也是如此。
答案 4 :(得分:0)
所有发布的答案都没有对我有用,但以下情况确实如此:
$ echo "" > /home/myusername/.pyenv/version
答案 5 :(得分:0)
对我来说,最终有效的方法是从pyenv
变量中删除所有$PATH
路径的蛮力方法:
PATH=`echo $PATH | tr ':' '\n' | sed '/pyenv/d' | tr '\n' ':' | sed -r 's/:$/\n/'`
我希望pyenv
本身提供更好的方法。
答案 6 :(得分:0)
这个 bash 函数删除 pyenv 路径并取消设置环境变量。 (我刚刚扩展了 shivams 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@}"
}
答案 7 :(得分:-1)
尝试pyenv deactivate
,手动停用虚拟环境。