在当前shell中停用pyenv

dan*_*ast 5 python 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
Run Code Online (Sandbox Code Playgroud)

启用pyenv。在某些情况下,我想(暂时)禁用pyenv。我怎样才能做到这一点?

小智 33

要从当前 shell 环境停用,请尝试:

pyenv shell --unset
Run Code Online (Sandbox Code Playgroud)

  • 这完全没有效果。 (5认同)

小智 7

尝试尝试一些变体:

env -i bash

env -i bash -l

env -i bash --norc

env -i bash --norc --noprofile

这并不是没有副作用,因为env -i会破坏你的整个会话,因此之后很多便利就像$HOME洗澡水一样消失了,但也是如此pyenv


小智 6

如果要使用系统中的python版本:

pyenv local system
Run Code Online (Sandbox Code Playgroud)

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

  • 你可能想要`pyenv shell system`,否则你只会影响当前目录(或以下)中的shell。 (9认同)
  • 继续@davidA的上述评论,在使用“pyenv shell系统”后小心移动到其他项目。它将优先于由“pyenv local”命令创建的 .python-version 文件。不要忘记使用“pyenv shell --unset”取消设置 shell,或者在处理其他项目时关闭 shell。 (4认同)

Noa*_*oah 5

我不确定这是否会消除 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))"`
Run Code Online (Sandbox Code Playgroud)

如果您希望能够重新启用它,只需存储以前的内容,$PATH以便以后恢复。


小智 -4

尝试pyenv deactivate手动停用虚拟环境。

文档在这里: https: //github.com/yyuu/pyenv-virtualenv

  • 当然,并移动到另一台计算机:)但是必须有一种方法可以在当前 shell 会话中禁用 pyenv 吗? (6认同)
  • Nonono,当前的 shell 已经启用了 pyenv,注释掉它和资源不会禁用它。 (5认同)
  • 抱歉,我还不够清楚:我想完全禁用 `pyenv` (对于 bash 会话),因为它与普通的 virtualenv 冲突(在 pyenv 的控制之外)。我不想禁用 pyenv 控制的特定 virtualenv 环境,但 **完全** 禁用 pyenv (对于 bash 会话) (2认同)