如何从python子进程运行anaconda

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

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

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

但是,我遇到以下错误

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

但是我可以通过在shell脚本中移动代码来实现此目的,如下test.sh文件中所述。

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

然后我可以运行以下代码

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

那么,任何人如何在不编写shell脚本的情况下怎么做?

python anaconda subprocess
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.