批处理激活Python虚拟环境后不执行后续命令的解决方法
问题原因
Windows批处理默认规则下,直接在脚本内调用其他.bat/.cmd脚本时,会将执行权完全移交到被调用脚本,被调用脚本运行结束后不会返回原父脚本继续执行后续指令。你代码里的convert-to-exe\scripts\activate就是Python虚拟环境生成的激活批处理脚本,直接调用就会出现执行到该行后,后续所有pip、pyinstaller指令都不再运行的问题。
修复方案
在调用activate脚本的命令前添加call命令即可。call是批处理内置命令,专门用于在当前脚本上下文内调用其他子脚本,子脚本执行完成后会自动返回原脚本,继续执行后续所有指令。
修正后的完整代码
@ECHO OFF COLOR 0F pip install virtualenv virtualenv convert-to-exe :: 加call调用激活脚本,执行完成后自动返回当前脚本继续运行 call convert-to-exe\scripts\activate pip install gspread pip install openpyxl pip install pyinstaller pyinstaller --noconsole --onefile "ZSCRIPT.py" :: 可选:所有操作执行完成后退出虚拟环境 deactivate
补充说明:如果不需要在脚本结束后保留虚拟环境激活状态,最后一行的
deactivate可以正常生效,不会中断流程。
内容的提问来源于stack exchange,提问作者Amit Shah
相关产品推荐
相关产品推荐

