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

Cookiecutter的pre_prompt.py钩子能否访问模板的output_dir值?

解决Cookiecutter pre_prompt.py获取output_dir的问题

问题根源

pre_prompt.py属于预提示阶段脚本,此时Cookiecutter还未完成模板渲染,{{ cookiecutter.output_dir }}这类Jinja语法不会被解析;同时脚本运行在Cookiecutter临时处理目录中,用os.getcwd()只能拿到临时目录路径,无法获取最终的目标父目录。

正确实现方式

Cookiecutter会将上下文数据通过环境变量传递给预阶段脚本,你可以直接读取COOKIECUTTER_OUTPUT_DIR环境变量来获取目标输出目录:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os

# 从环境变量获取最终输出目录
output_dir = os.environ.get('COOKIECUTTER_OUTPUT_DIR')
if output_dir:
    # 提取输出目录的父目录
    parent_dir = os.path.dirname(output_dir)
    print(f"目标父目录: {parent_dir}")
else:
    print("无法获取output_dir,请确认Cookiecutter版本是否支持该环境变量")

额外说明

  • 所有预阶段脚本(pre_prompt、pre_gen)都只能通过COOKIECUTTER_*前缀的环境变量访问Cookiecutter上下文,不能使用Jinja模板语法
  • cookiecutter.json中定义的每一个字段,都对应一个COOKIECUTTER_字段名格式的环境变量(字段名转为大写)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:44:51