我正在创建我的第一个炊具。总的来说,这一切进行得很顺利,但我现在想添加一个我自己的jinja2过滤器。
与注释在这个问题上一致,我创建了一个新的Jinja2扩展就像这里的那个。此扩展的完整代码如下:
然而,下面的简单示例演示了相同的错误:
# -*- 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,如下所示:
# -*- coding: utf-8 -*-
from paper_title import PaperTitleExtension
__all__ = ['PaperTitleExtension']基于这份文件,我还在`cookiecutter.json文件中添加了以下内容:
"_extensions": ["jinja2_extensions.PaperTitleExtension"]但是,运行此操作会产生以下错误:
$ cookiecutter sigchiproceedings-cookiecutter
Unable to load extension: No module named 'jinja2_extensions'我猜我错过了一步,有人能帮忙吗?
发布于 2021-11-08 23:01:24
遇到同样的问题,请尝试使用python3 -m选项执行
我在扩展/json_loads.py中的扩展
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_loadscookiecutter.json
{
"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执行,它运行得很好。
发布于 2019-02-11 00:42:26
我之前也遇到过一个类似的错误。
Unable to load extension: No module named 'cookiecutter_repo_extensions'问题是,在我的例子中,有一个依赖的‘炊具-回购-扩展’,我没有安装在我的虚拟环境。
发布于 2019-12-30 15:51:10
包含扩展的目录需要在PYTHONPATH上。
https://github.com/cookiecutter/cookiecutter/issues/1211#issuecomment-522226155
如能改进文档,✍️将不胜感激。
https://stackoverflow.com/questions/48184756
复制相似问题