停用pipenv环境

85

我该如何停用pipenv环境?

在其他工具中,我可以执行类似于source deactivate的命令,但这里没有任何效果。

创建一个环境:

TBD

pipenv --three

激活环境:

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

但是如何停用?


只是一个小提示,当使用pipenv作为您的软件包和环境管理器时,该工具已经提供了一个更简单的命令来激活虚拟环境,即pipenv shell,如文档所述,因此不需要使用source $(pipenv --venv)/bin/activate - dandev486
输入“exit”即可退出bash。 - Sadra
4
目前被接受的答案实际上是错误的,甚至会搞砸事情,正如下面所解释的那样。您能否接受其中一个正确的答案? - djvg
9个回答

94

对于 Williams 的答案,进一步解释一下,预期的流程是使用 pipenv shell 进入 virtualenv。 当您以这种方式激活 virtualenv 时,控制台输出现在指示使用 exit 来退出:

生成环境 shell (/bin/zsh)。 使用 'exit' 退出。

试图使用 deactivate 退出 virtualenv 将使 pipenv 处于混乱状态,因为您仍然在该产生的 shell 实例中,但没有激活的 virtualenv。


如果您使用类似于 source $(pipenv --venv)/bin/activate 的命令进入虚拟环境,那么可以使用 deactivate 命令来退出该环境。 - msoutopico
谢谢,它对我有帮助,讲解清晰易懂,因为只在虚拟环境中停用。 - monti
“Expected workflow”链接无法使用。 - carkod

60

使用Shell命令 exit 也可以解决问题。

当使用deactivate命令仍然导致错误时,这对我很有用:

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

使用exit后,我成功地切换了pipenv实例。这可能是一个bug,我应该向开发者报告。


8
根据我阅读此主题在 GitHub 上的问题后的理解,这不是一个错误。这个特定的 ticket(https://github.com/pypa/pipenv/issues/84)帮助我认识到......总之,您可以打开一个新的 shell 并像往常一样继续操作,或者输入 exit 然后像往常一样继续操作。 - Jarvis

35
更新:请查看下面的其他答案。正如已经解释的那样,这适用于virtualenv,但pipenv的工作方式不同。

只需在命令行中输入deactivate即可。请参阅此处的指南。


40
deactivate 命令适用于 virtualenv,但此处使用的工具是 pipenv,它的工作方式不同,deactivate 命令将无效。必须在 shell 中键入 exit 命令才能关闭由 pipenv 命令生成的虚拟环境。答案是有误导性的。 - Saransh Singh
指南链接不再正确。 - moojen

18

只需键入exit,即可退出您的shell。

如果您使用deactivate,当您尝试再次进入shell时,可能会出现以下错误。

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

所以,最好使用“exit”进行快速访问。


1
快速提示,如果您遇到此错误,只需在受影响的目录中键入“exit”,即可成功停用pipenv shell。 - Olivier

12

从pipenv虚拟环境中退出,您只需运行以下命令即可。

deactivate

7

请查看此主题,了解贡献者的观点:

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

剧透:

pipenv会使用虚拟环境路径启动一个新的shell会话,而不是更改当前shell会话中的路径。这就是为什么“deactivate”命令无法工作的原因。您需要退出shell会话。使用“exit”命令或CTRL-d即可。


0

首先执行 "deactivate" 命令,然后再执行 "exit" 命令即可退出虚拟环境。目前这种方法对我有效。


8
命令exit已经能够完成整个任务,因为根据此文档块的结尾所述,命令pipenv shell会生成一个新的 shell 进程,所以无需先执行deactivate - dandev486
1
看起来@dandev486的链接已经失效了,而新页面并没有真正讲述如何退出。就此而言,旧文档中提到:“这将产生一个新的shell子进程,可以通过使用exit命令来停用。”个人认为exit仍然可能是离开环境的正确方式。 - jrh

0

问题的原因是由于在另一个目录中进行了先前的 shell 操作,所以我所做的是通过 ctrl+d 退出我的新目录,然后通过 alt+t 打开终端并构建到预定目录,然后运行 pipenv shell 命令。


-1
如果您正在使用pipenv shell激活虚拟环境,但exitdeactivate无法正常工作。请右键单击并关闭终端。这对我很有效。

在一般设置中,关闭终端可能不是一个选项。Pipenv是一个用于管理环境变量的包装器。通过输入'exit'来结束会话应该就足够了。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接