停用 pipenv 环境

Deactivate a pipenv environment

如何停用我的 pipenv 环境?

使用其他工具,我可以执行类似 source deactivate 的操作,但这对此处没有影响。

创建环境:

pipenv --three

激活环境:

source $(pipenv --venv)/bin/activate

但是如何停用?

更新:请参阅下面的其他答案。如前所述,这适用于 virtualenv,但 pipenv 的工作方式不同。

只需在命令行输入deactivate。请参阅指南 here

使用 shell 命令 exit 也有效。

当我使用 deactivate 时这对我有用,但仍然给我留下了错误:

Shell for UNKNOWN_VIRTUAL_ENVIRONMENT already activated.
No action taken to avoid nested environments.

使用 exit 后,我可以成功切换 pipenv 个实例。这很可能是一个错误,我应该报告它。

为了更详细地说明 Williams 的回答,expected workflow 是使用 pipenv shell 进入 virtualenv。当您以这种方式激活 virtualenv 时,控制台输出现在指示使用 exit:

Spawning environment shell (/bin/zsh). Use 'exit' to leave.

尝试使用 deactivate 退出 virtualenv 将使 pipenv 处于混乱状态,因为您仍将处于生成的 shell 实例中,而不是处于激活的 virtualenv 中。

首先"deactivate"然后"exit"你就会离开虚拟环境。到目前为止,这对我有用。

请从contributor的角度查看此主题的答案:

https://github.com/pypa/pipenv/issues/84#issuecomment-275056943

剧透:

pipenv starts a new shell session with the virtualenv pathing instead of changing the pathing in the current shell session. That is why deactivate does not work. you need to exit the shell session. the exit command or CTRL-d will do the trick.

只要输入“exit”,它就会带你离开shell。

如果您使用“停用”,那么当您再次尝试输入 shell 时,您可能会遇到此错误。

Shell for UNKNOWN_VIRTUAL_ENVIRONMENT already activated.
    No action taken to avoid nested environments.

所以,更喜欢使用“退出”来快速访问。

从 pipenv 虚拟环境中停用,您可以简单地运行以下命令。

deactivate

因为之前在另一个目录中的 shell 操作导致的问题,所以我所做的是通过 ctrl+d 退出终端退出我的新目录。之后,我通过 alt+t 打开终端,将目录构建到预期的 directory.then 运行 pipenv shell 命令。