VS Code中如何配置定时任务在Poetry Shell环境内运行Python脚本
VS Code中如何配置定时任务在Poetry Shell环境内运行Python脚本
我明白你现在的困扰啦——原本想让脚本在Poetry创建的虚拟环境里执行,但现在两个任务各自打开独立终端,脚本根本没用到那个Poetry Shell的环境。其实不用拆成两个任务,Poetry本身就提供了直接在虚拟环境中执行命令的便捷方式,咱们来调整一下配置就能搞定:
核心思路
不用单独执行poetry shell激活环境,而是直接用poetry run前缀来调用Python脚本。这个命令会自动在Poetry管理的虚拟环境上下文里执行后续命令,一步到位,完全不需要手动先开Shell。
修改后的tasks.json配置
把原来的两个任务合并成一个,直接用poetry run执行脚本:
{ "version": "2.0.0", "tasks": [ { "label": "run_script_in_poetry", "type": "shell", "command": "poetry run python C:\\dir1\\dir2\\myscript1.py", "group": "group1", "presentation": { "reveal": "always", "panel": "new" // 要是你想每次都用新终端就保留这个;想复用终端的话改成"shared"就行 }, "problemMatcher": "$msCompile" } ] }
修改后的settings.json定时配置
只需要保留一个定时任务,指向咱们刚才新建的合并任务:
{ "workbench.colorTheme": "Default High Contrast", "terminal.integrated.scrollback": 4000, "task.allowAutomaticTasks": "on", "tasks": [ { "at": "16 16 * * *", // 这里改成你实际需要的定时时间 "run": "workbench.action.tasks.runTask", "args": ["run_script_in_poetry"] } ], "workbench.startupEditor": "none" }
额外注意事项
- 确保你的VS Code工作区根目录是
C:\dir1,这样Poetry才能正确找到poetry.lock和.venv文件夹。如果工作区根目录不是这里,你可以在tasks.json的任务里加上"cwd": "C:\\dir1",来指定工作目录。 - 要是你坚持想分开执行激活环境和跑脚本的步骤,其实可以用
dependsOn让第二个任务依赖第一个,但这种方式还是会打开两个终端,而且脚本不一定能继承到Poetry Shell的环境,所以更推荐用poetry run的简洁方案。
备注:内容来源于stack exchange,提问作者Rembergne




