首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定位Cookiecutter扩展程序

定位Cookiecutter扩展程序
EN

Stack Overflow用户
提问于 2018-01-10 10:01:28
回答 3查看 1.1K关注 0票数 9

我正在创建我的第一个炊具。总的来说,这一切进行得很顺利,但我现在想添加一个我自己的jinja2过滤器。

与注释在这个问题上一致,我创建了一个新的Jinja2扩展就像这里的那个。此扩展的完整代码如下:

https://github.com/seclinch/sigchiproceedings-cookiecutter/commit/5a314fa7207fa8ab7b4024564cec8bb1e1629cad#diff-f4acf470acf9ef37395ef389c12f8613

然而,下面的简单示例演示了相同的错误:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
from jinja2.ext import Extension


def slug(value):
    return value


class PaperTitleExtension(Extension):
    def __init__(self, environment):
        super(PaperTitleExtension, self).__init__(environment)
        environment.filters['slug'] = slug

我把这段代码放到了一个新的jinja2_extensions目录中,并添加了一个简单的__init__.py,如下所示:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
from paper_title import PaperTitleExtension

__all__ = ['PaperTitleExtension']

基于这份文件,我还在`cookiecutter.json文件中添加了以下内容:

代码语言:javascript
复制
"_extensions": ["jinja2_extensions.PaperTitleExtension"]

但是,运行此操作会产生以下错误:

代码语言:javascript
复制
$ cookiecutter sigchiproceedings-cookiecutter
Unable to load extension: No module named 'jinja2_extensions'

我猜我错过了一步,有人能帮忙吗?

EN

回答 3

Stack Overflow用户

发布于 2021-11-08 23:01:24

遇到同样的问题,请尝试使用python3 -m选项执行

我在扩展/json_loads.py中的扩展

代码语言:javascript
复制
import json

from jinja2.ext import Extension


def json_loads(value):
    return json.loads(value)


class JsonLoadsExtension(Extension):
    def __init__(self, environment):
        super(JsonLoadsExtension, self).__init__(environment)
        environment.filters['json_loads'] = json_loads

cookiecutter.json

代码语言:javascript
复制
{
  "service_name": "test",
  "service_slug": "{{ cookiecutter.service_name.replace('-', '_') }}",
...
  "_extensions": ["extensions.json_loads.JsonLoadsExtension"]
}

然后我用python3 -m cookiecutter . no_input=True timestamp="123" extra_dict="{\"features\": [\"redis\", \"grpc_client\"]}" -f执行,它运行得很好。

票数 1
EN

Stack Overflow用户

发布于 2019-02-11 00:42:26

我之前也遇到过一个类似的错误。

代码语言:javascript
复制
Unable to load extension: No module named 'cookiecutter_repo_extensions'

问题是,在我的例子中,有一个依赖的‘炊具-回购-扩展’,我没有安装在我的虚拟环境。

票数 0
EN

Stack Overflow用户

发布于 2019-12-30 15:51:10

包含扩展的目录需要在PYTHONPATH上。

https://github.com/cookiecutter/cookiecutter/issues/1211#issuecomment-522226155

如能改进文档,✍️将不胜感激。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48184756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档