You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动