from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader("__init__", "templates")) #use the blank __init__ script to init the environment, and the templates folder to load templates
tmpl = env.get_template("python_script_tmpl") #load the template
tmpl.stream(python="/usr/bin/env python3").dump("python_script.py") #create from the template a script called python_script.py
我相信这是一种被称为“模板化”的技术(
%{var}
在RPM使用的模板引擎中使用,我们可以看到in this example,特别是.spec
文件)。存在许多这样的模板引擎,Jinja2,Mako等等(可以在here中找到更详尽的列表)现在让我们使用Jinja2创建一个简单的示例,我们首先创建一个模板(让我们按照惯例将它放在
templates
文件夹中),我们称之为python\u script\u tmpl:现在让我们创建一个init(空脚本)来创建一个与Jinja2一起使用的环境。你知道吗
现在你应该有这样一个结构:
让我们在
my_app
目录中启动一个shell,并运行以下行(doc to install jinja2):现在在我的应用程序的根目录下,你应该有脚本
python_script.py
,它应该是这样的:使用最终文件夹结构:
假设shebang and the env is correctly configured,您可以运行脚本而不会出现问题。(虽然不是很有用的脚本)
现在做模板有什么意义?
如果你必须重复很多部分的时间(例如shebang),你必须修改它,那么你就必须修改它出现的每个文件,如果你使用一个模板,你只需要修改一次变量并注入它。这是模板化的直接优势。你知道吗
注意:正如@CharlesDuffy提到的,这个脚本可能是从一个
RPM
包中提取的,所以除了学习或者重新打包之外,我建议您使用rpm命令行工具来运行整个包。你知道吗相关问题 更多 >
编程相关推荐