在一个进程中从bash脚本中运行两个命令(conda)。

问题描述 投票:0回答:1

我想写一个bash脚本,包括停用和删除conda环境。下面是一个例子。remove_env.sh:

#!/bin/bash

# Get the conda command available in bash
eval "$(conda shell.bash hook)"

# Deactivate environment
conda deactivate

# Remove environment
conda remove --name my_env --all --yes

必须停用环境才能删除它。

遗憾的是,这行不通。我在终端机上执行这个操作。

$ conda activate my_env
$ ./remove_env.sh

CondaEnvironmentError: cannot remove current environment. deactivate and run conda remove again

我认为问题出在... 分叉 - 本质上,环境在一个进程中被停用,但在另一个进程中运行删除调用,而另一个进程并没有停用环境。但我不太确定。

一些注意事项。

  • 我不能使用 source remove_env.sh - 我一定要能用 ./remove_env.sh
  • 我试过了,没有成功。
#!/bin/bash

# Get the conda command available in bash
eval "$(conda shell.bash hook)"

# Deactivate and remove environment
conda deactivate && conda remove --name my_env --all --yes
  • 我调用了这个命令 conda activate my_env 在我 ~./bashrc
  • 我不能使用别名--必须使用bash脚本。
linux bash conda
1个回答
0
投票

谢谢Jonathan在评论中给出的答案。你说的完全正确,我完全忽略了conda手册中的那个蓝色注释。我能够做到这一点。

#!/bin/bash

# Get the conda command available in bash
eval "$(conda shell.bash hook)"

# Activate the environment
conda activate my_env

# Deactivate environment
conda deactivate

# Remove environment
conda remove --name my_env --all --yes

我想不管你是否 conda activate 带或不带参数。


0
投票

或者,使用Conda的 run 工具,可以避免手动激活。也就是说,类似于

#!/usr/bin/env conda run bash

conda env remove -n my_env -y
© www.soinside.com 2019 - 2024. All rights reserved.