Как активировать среду Conda в скрипте Python?

#python #conda #environment

#python #conda #Окружающая среда

Вопрос:

У меня есть скрипт, используемый os.system(cmd) для запуска канала. Мне нужен канал для запуска в определенной среде Conda, поэтому я попытался сделать что-то вроде этого:

 cmd = 'conda activate base amp;amp; '   cmd
os.system(cmd)
  

Тем не менее, я получаю:

 CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.
  

Дело в том, что моя оболочка настроена правильно. Если я запускаю то же cmd самое в оболочке, все работает так, как ожидалось.

Я тоже пробовал использовать subprocess.run(cmd, shell=True) , но получаю тот же результат.

Есть ли способ запуска conda activate base из скрипта Python?

Комментарии:

1. Если это macOS / linux, вам необходимо source <conda-base>/etc/profile.d/conda.sh , прежде чем вы сможете запускать команды conda.

2. @cel Это сработало. Можете ли вы опубликовать это как ответ?

3. моя установка anaconda пока совершенно корректна conda.sh в этом конкретном пути не заданы права доступа к исполняемому файлу. Следовательно, используйте . <conda-base>/etc/profile.d/conda.sh для принудительного выполнения.

Ответ №1:

conda activate действительно предназначен для использования в интерактивных настройках (оболочках / командных подсказках). Но вы можете использовать conda run для выполнения определенного скрипта python в данной среде.

Попробуйте это вместо:

 conda run -n <environment> <script_name>
  

Комментарии:

1. Я получаю permission denied

2. Я не могу воспроизвести эту ошибку, однако звучит так, как будто у вас уже есть решение, опубликованное @cel