是否有可能使用conda环境ENV1启动Python脚本,并在脚本中的某个点切换到环境ENV2和后面的代码以在ENV2中而不是在ENV1中执行?我已经尝试了以下建议的解决方案,但它不起作用:
下面是一个示例脚本。假设我在以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,可执行文件=‘/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')
发布于 2022-03-11 22:41:07
是否有可能使用conda环境ENV1启动Python,并在脚本中的某个时候切换到环境ENV2,以及后面的代码将在ENV2中而不是ENV1中执行?
不,这是不可能的,至少在实际的水平上是不可能的,因为启动python脚本会创建一个在底层操作系统中运行的进程。
一种可能是您可以使用您想要的任何conda环境启动另一个 python脚本。但你为什么要这么做?
发布于 2022-10-14 05:43:30
我试过调查这个..。因为我也有类似的问题。这是我发现的。
中执行的任何子进程或系统命令。
,
my_env=[] cmdStr=“my_env.append("echo \”Running \“) my_env.append("activate”) my_env.append(“echo \”在my_env中为ii做一些事情: cmdStr = cmdStr + ii +“^&”os.system("start“+ cmdStr + "cmd /k")
https://stackoverflow.com/questions/71445344
复制相似问题