首页 > 解决方案 > 如何从 python 子进程运行 anaconda

问题描述

我正在尝试在 python 中创建激活 conda env 然后运行 ​​shell 脚本的子进程。为了实现这一点,我正在做以下事情

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

但是,我收到以下错误

CommandNotFoundError:您的 shell 未正确配置为使用“conda activate”。

但是,我可以通过在 test.sh 文件中移动 shell 脚本中的代码来实现这一点。

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

然后我可以运行以下代码

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

那么任何人如何在不编写shell脚本的情况下做到这一点?

标签: pythonanacondasubprocess

解决方案


您需要设置运行 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


推荐阅读