我正在使用一个 python 程序,该程序使用 conda 在单独的变量中安装的一些模块。因此,在运行脚本之前,我从 unix shell 调用以下命令来获取环境:
conda activate my-rdkit-env
是否可以在我的 python 脚本中调用它?我尝试按照以下方式进行操作,但没有成功
import subprocess
subprocess.run('conda init bash', shell=True)
#subprocess.run('conda activate my-rdkit-env', shell=True)
答案1
从这个答案您应该能够直接从环境中执行脚本,这将使您在工作环境中执行其他代码时无需激活和停用环境。
process = subprocess.Popen(
"conda run -n ${CONDA_ENV_NAME} python script.py".split(), , stdout=subprocess.PIPE
)
output, error = process.communicate()
答案2
从https://github.com/conda/conda/issues/9296
Conda init 将 conda 注册为 shell 函数,您需要让该位初始化您的 shell 才能进行激活。你可以做类似的事情
. $CONDA_PREFIX/etc/profile.d/conda.sh && conda activate test4 && conda env list
例如:
import subprocess
cmd = '. $CONDA_PREFIX/etc/profile.d/conda.sh && conda activate my-rdkit-env'
subprocess.call(cmd, shell=True, executable='/bin/bash')
笔记:
如果运行此代码时您已经处于不同的 conda 环境中,$CONDA_PREFIX
则会为您提供该环境中的前缀。要获得基础版本,只需打开终端并输入$CONDA_PREFIX
。然后替换$CONDA_PREFIX
为提示给您的内容(通常类似于/home/user/anaconda3
)。