批处理文件切换Anaconda环境后无法执行Python命令求助
解决Anaconda环境激活后无法执行Python脚本的批处理问题
你的问题出在命令结构上——你把activate.bat和python命令直接塞在了同一个cmd /K的参数里,系统会把后面的python命令当成activate.bat的额外参数,而不是激活环境后要执行的后续命令,自然就不会运行你的脚本啦。
给你两种靠谱的解决方案,按需选择:
方案一:在当前批处理窗口直接执行(推荐)
这种方法不需要新开cmd窗口,直接在当前窗口激活环境并运行脚本,代码更清晰:
@echo off :: 调用activate.bat激活Anaconda的base环境 call "C:\Users\rexon.carvalho\AppData\Local\Continuum\anaconda3\Scripts\activate.bat" "C:\Users\rexon.carvalho\AppData\Local\Continuum\anaconda3" :: 激活环境后执行Python脚本 python "C:\Users\rexon.carvalho\Jypyter_scripts\pjm_load\cron_test.py" :: 暂停窗口查看输出 pause
这里用call命令是关键,它会在当前批处理的环境中执行activate.bat,激活环境后后续的python命令就能直接在这个环境里运行了。
方案二:新开一个cmd窗口执行
如果你需要在新窗口中完成整个流程,就得把激活和执行脚本的命令用&&连接,并且正确处理引号嵌套:
%windir%\System32\cmd.exe "/K" "call ""C:\Users\rexon.carvalho\AppData\Local\Continuum\anaconda3\Scripts\activate.bat"" ""C:\Users\rexon.carvalho\AppData\Local\Continuum\anaconda3"" && python ""C:\Users\rexon.carvalho\Jypyter_scripts\pjm_load\cron_test.py""" pause
这里的双引号嵌套是为了避免路径中如果出现空格导致命令解析错误,即使你的路径现在没空格,也是个好习惯。
另外可以小优化下路径,用%USERPROFILE%代替C:\Users\rexon.carvalho,比如%USERPROFILE%\AppData\Local\Continuum\anaconda3,这样换电脑或者用户时也能复用脚本。
内容的提问来源于stack exchange,提问作者Rexon
相关产品推荐
相关产品推荐

