You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode执行Python+Jinja2代码报TemplateNotFound,虚拟环境运行正常求助

解决VSCode中Jinja2模板找不到的问题

这个问题我之前也碰到过,核心原因其实很简单:VSCode终端的工作目录和你手动进入虚拟环境的目录不一致,和虚拟环境本身是否被VSCode识别没关系。

具体原因拆解

  • 你的Jinja2代码里用了FileSystemLoader('.'),这个.指代的是当前终端的工作目录,而不是脚本所在的目录。
  • 当你直接进入虚拟环境目录执行脚本时,当前工作目录就是模板hworld.j2所在的位置,所以能正常找到;但VSCode默认的工作目录可能是你打开的项目根目录(比如你在VSCode里打开的是上级文件夹),这时候.指向的是根目录,自然找不到子目录里的模板文件。
  • 哪怕VSCode已经切换到对应的虚拟环境,虚拟环境只是提供Python解释器,并不会自动把终端工作目录切换到虚拟环境所在的文件夹。

几种解决方法

  • 手动切换终端工作目录:在VSCode终端里输入cd命令,切换到你的Python脚本和hworld.j2所在的目录,再运行脚本,比如:
    cd /path/to/your/virtualenv-folder
    python your-script.py
    
  • 修改VSCode的工作目录:直接在VSCode里打开存放脚本和模板的那个文件夹(通过File > Open Folder选择),这样终端的默认工作目录就会自动变成这个文件夹,运行脚本就不会报错了。
  • 用脚本所在目录作为模板加载路径(最推荐):修改Python代码,让Jinja2自动从脚本所在的目录找模板,不管在哪运行都不会出错:
    import os
    from jinja2 import FileSystemLoader, Environment
    
    # 获取当前脚本的绝对路径所在目录
    script_directory = os.path.dirname(os.path.abspath(__file__))
    env = Environment(loader=FileSystemLoader(script_directory))
    template = env.get_template('hworld.j2')
    print(template.render())
    
  • 指定模板的绝对路径:直接把FileSystemLoader('.')改成模板所在的绝对路径,比如FileSystemLoader('/Users/you/your-project/virtualenv'),这种方法虽然有效,但不够灵活,换环境就需要修改路径。

内容的提问来源于stack exchange,提问作者Somenath Sinha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:37:32