关闭 jupyter 实验室实例时,如何在批处理文件退出之前停用 conda 环境?

How to deactivate a conda environment before the batch file exits when closing a jupyter lab instance?

我有一个用于 运行 我的 jupyter 实验室的批处理文件。

file.bat

call <anaconda_dir>\Scripts\activate.bat rasa_ai_conda
jupyter lab
conda deactivate
call conda.bat deactivate

这个批处理文件将使用 windows 提示符在 anaconda 中激活我的 rasa 虚拟环境。

所以现在当我按 ctrl+c 关闭我的 jupyter 实验室时,它会询问这个

Terminate batch job (Y/N)?

首先,即使我输入 'N',提示也会关闭,我该如何解决这个问题。

其次,我想在提示符退出之前执行我的所有脚本,我该怎么做?

已尝试搜索此问题的解决方案,但仍未找到解决方案。

所以,我终于找到了解决办法。据我了解,这就是正在发生的事情。如果我错了请纠正我。

所以,事实证明,在批处理文件中,jupyter lab 也在调用它自己的批处理文件。与调用 .exe 文件不同的是,它替换了 cmd(当前进程),后者将暂停提示并 运行 它作为一个新进程。当 jupyter lab 实例关闭时,它基本上结束了进程,即 jupyter lab 进程取代了 cmd 进程,反过来关闭提示,因为它认为这是进程的结束。

但是当我们使用 call 时,会初始化一个新进程,使原始进程保持暂停状态,即 cmd 提示符在后台暂停。

因此,当当前 运行ning 进程即 jupyter lab 关闭时,控制将转移到前一个进程即 cmd 提示符,它将继续 运行 下一个命令直到结束。

在上面的批处理文件中,我们只需要进行这些更改

call <anaconda_dir>\Scripts\activate.bat rasa_ai_conda
call jupyter lab
call conda.bat deactivate

这将 运行 所有命令,即使在按下 ctrl+c 后终止 jupyter 实验室服务器实例后也是如此。因此,如果我们为 Terminate batch job (Y/N)? 输入 n,jupyter lab 之后的命令也会 运行。

这解决了我的两个问题。

如果我理解正确,请告诉我。如果不是,请对正在发生的事情给出正确的解释。