我正在尝试在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脚本的情况下怎么做?
您需要设置运行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
。