web-dev-qa-db-ja.com

現在のシェルで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を(一時的に)無効にしたい場合があります。これどうやってするの?

9
dangonfast
6
pylanglois

これで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を保存して、後で復元できるようにします。

2
Noah

次のいくつかのバリエーションを試してみてください。

env -i bash

env -i bash -l

env -i bash --norc

env -i bash --norc --noprofile

env -iがセッション全体を無効にするため、これには副作用がないわけではありません。したがって、$HOMEのような多くの便利さがお風呂の水でなくなりますが、pyenvも同様です。

2
Rotonen

投稿された回答はどれも私にはうまくいきませんでしたが、以下はうまくいきました:

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