如何使用Python在Anaconda Prompt中批量执行多conda环境命令
多独立Conda环境程序一键启动方案
核心逻辑不需要专门找适配Anaconda Prompt的特殊工具:Anaconda Prompt本身就是预加载了conda初始化逻辑的系统终端,直接调用conda原生的run指令就能跳过手动激活环境、开终端的步骤,单脚本即可并行启动所有程序。
方案1:无依赖批处理实现(Windows系统最简便)
不需要写Python代码,直接新建后缀为.bat的脚本,每个start指令会自动弹出独立终端窗口,和手动开Anaconda Prompt敲命令的运行效果完全一致,窗口会保留用于查看程序运行日志。
@echo off :: 替换为你本地的conda安装根目录 set CONDA_ROOT=C:\ProgramData\anaconda3 :: 按格式追加你的6个启动任务即可 :: 格式:start 调用conda run 指定环境名 执行对应启动命令 start "" "%CONDA_ROOT%\condabin\conda.bat" run -n 你的第一个环境名 python D:\your_project\app1\main.py start "" "%CONDA_ROOT%\condabin\conda.bat" run -n 你的第二个环境名 python D:\your_project\app2\server.py start "" "%CONDA_ROOT%\condabin\conda.bat" run -n 你的第三个环境名 jupyter lab --port=8889 :: 剩余任务照着上面三行的格式补全就行 pause
方案2:Python脚本实现(跨场景适配性更强)
如果需要加启动前检查、异常重试之类的自定义逻辑,用标准库subprocess即可实现,不需要安装第三方包,核心逻辑和批处理一致。
import subprocess from pathlib import Path # 替换为你本地的conda安装根目录 CONDA_ROOT = Path(r"C:\ProgramData\anaconda3") CONDA_EXEC = CONDA_ROOT / "condabin" / "conda.bat" # Mac/Linux系统替换为 bin/conda # 所有待启动任务按(环境名, 启动命令参数列表)格式写入 task_list = [ ("env1", ["python", r"D:\your_project\app1\main.py"]), ("env2", ["python", r"D:\your_project\app2\server.py"]), ("env3", ["jupyter", "lab", "--port=8889"]), # 剩余任务按格式追加 ] for env_name, cmd in task_list: full_command = [str(CONDA_EXEC), "run", "--no-capture-output", "-n", env_name] + cmd # Windows下CREATE_NEW_CONSOLE参数会弹出独立终端窗口 subprocess.Popen( full_command, creationflags=subprocess.CREATE_NEW_CONSOLE )
注意事项
- 所有文件路径尽量写绝对路径,避免脚本启动工作目录不对导致找不到文件的问题
- 不要用
os.system或者subprocess.run执行启动命令,这两个方法是阻塞式的,会等上一个程序退出才启动下一个,必须用subprocess.Popen实现并行启动 - Mac/Linux系统不需要
creationflags参数,把开新窗口的逻辑替换为对应系统终端指令即可,比如MacOS用open -a Terminal、GNOME桌面用gnome-terminal -e - 如果不需要保留终端窗口看日志,去掉开新窗口的相关参数,程序就会在后台静默运行
内容的提问来源于stack exchange,提问作者Wiliane Souza
相关产品推荐
相关产品推荐

