как запустить анаконду из python подпроцесса - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь создать подпроцесс в python, который активирует conda env, а затем запускает скрипт оболочки. Чтобы добиться этого, я делаю следующее

subprocess.call("""conda activate r_conda && Rscript -e 'rmarkdown::render("test.Rmd")'""", shell=True,  executable="/bin/bash")

Однако я получаю следующую ошибку

CommandNotFoundError: Ваша оболочка не была правильно настроена для использования 'conda activ'.

Однако я могу добиться этого путем перемещения кода в сценарии оболочки, как показано в тесте. sh файл.

conda activate r_conda
Rscript -e 'rmarkdown::render("test.Rmd")'

Затем я могу запустить следующий код

subprocess.call("""bash -i test.sh""", shell=True)

Так кто-нибудь, как это сделать без написания сценария оболочки?

1 Ответ

1 голос
/ 22 апреля 2020

Вам необходимо настроить среду, необходимую для запуска conda. (это делается с помощью сценариев инициализации, таких как .bash_profile, если вы запускаете его в командной строке)

Возможно, попробуйте добавить это: eval "$(conda shell.bash hook)"

subprocess.call("""eval "$(conda shell.bash hook)" && conda activate r_conda && echo $CONDA_DEFAULT_ENV""", shell=True,  executable="/bin/bash")

Это должно распечатать название вашей среды Conda - r_conda.

...