Выполнение двух команд из скрипта bash в одном процессе (conda) - PullRequest
1 голос
/ 24 апреля 2020

Я пытаюсь написать 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

Я думаю, что проблема связана с разветвлением - по сути, среда деактивируется в одном процессе, но затем выполняется вызов remove другой процесс, в котором не отключена среда. Но я не совсем уверен.

Некоторые примечания:

  • Я не могу использовать 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 скрипт

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

В качестве альтернативы, используя инструмент Conda run, можно избежать ручной активации. То есть что-то вроде

#!/usr/bin/env conda run bash

conda env remove -n my_env -y
0 голосов
/ 24 апреля 2020

Спасибо Джонатану за ответ в комментариях. Вы совершенно правы, я полностью пропустил эту синюю заметку в руководстве по 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 с аргументами или без.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...