批处理调用Anaconda环境无法运行Python脚本且无报错是什么原因?
你的脚本无执行无报错的核心原因是PowerShell调用参数携带了-NoExit,该参数会让PowerShell进程执行完conda激活命令后持续驻留,不会返回控制权给批处理进程,后续的python movehist.py命令永远不会被触发。
修复方案
方案1:直接把Python执行逻辑整合到PowerShell调用链
这种写法完全复用你原有调用PowerShell激活conda的逻辑,只需删除-NoExit参数,新增Python脚本执行命令即可:
@echo off call %windir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -Command "& 'C:\Program Files\Anaconda3-2020.07-Windows-x86_64\shell\condabin\conda-hook.ps1' ; conda activate 'C:\Program Files\Anaconda3-2020.07-Windows-x86_64' ; python 'X:\脚本所在完整路径\movehist.py'" @pause
方案2:直接使用批处理原生的conda激活逻辑(更轻量)
不需要调用PowerShell,直接用Anaconda自带的批处理激活脚本,兼容性更好:
@echo off call "C:\Program Files\Anaconda3-2020.07-Windows-x86_64\Scripts\activate.bat" "C:\Program Files\Anaconda3-2020.07-Windows-x86_64" :: 若movehist.py和批处理文件在同一目录,可替换为 python "%~dp0movehist.py" python "X:\脚本所在完整路径\movehist.py" @pause
注意事项
- 脚本路径建议写绝对路径,避免因工作目录不一致导致找不到
movehist.py的问题 - 如需激活自定义conda环境,将激活路径替换为对应环境目录即可,示例:
C:\Program Files\Anaconda3-2020.07-Windows-x86_64\envs\自定义环境名
内容的提问来源于stack exchange,提问作者Lexi
相关产品推荐
相关产品推荐

