从 python 脚本中切换 conda 环境

switch conda environment from within python script

是否有可能使用 conda 环境 ENV1 启动 Python 脚本,并在脚本中的某个时刻切换到环境 ENV2 以及该点之后的代码在 ENV2 而不是 ENV1 中执行?我尝试了以下建议的解决方案,但它不起作用:

https://unix.stackexchange.com/questions/622383/subprocess-activate-conda-environment-from-python-script?newreg=191cf527472141d2a76a244969897af8

下面是一个示例脚本。假设我在将 ENV1 作为我的活动环境时启动脚本:

import subprocess

print("Changing Conda virtual environment to 'ENV2'.")
cmd = '. $CONDA_PREFIX_1/etc/profile.d/conda.sh && conda activate ENV2 && echo $CONDA_PREFIX'
subprocess.call(cmd, shell=True, executable='/bin/bash')
print(os.environ['CONDA_PREFIX'])

我能想到的唯一可行的解​​决方案是将“subprocess.call(cmd, shell=True, executable='/bin/bash')”之后出现的所有代码保存到名为“script_for_ENV2.py”的单独脚本并将上面的脚本替换为:

import subprocess

cmd = 'conda run -n ENV2 script_for_ENV2.py'
subprocess.call(cmd, shell=True, executable='/bin/bash')

Is it possible at all to launch a Python script using conda environment ENV1 and at some point within the script to switch to environment ENV2 and the code that follows that point to be executed within ENV2 instead of ENV1?

不,这是不可能的,至少在实际层面上是不可能的,因为启动 python 脚本会在底层操作系统中创建一个进程 运行。

一种可能性是您可以使用您想要的任何 conda 环境启动 另一个 python 脚本。但是你为什么要这样做?