从Jinja2模板创建项目布局。
make的Python项目详细描述
- 源代码:https://github.com/fholmer/make
- PYPI:https://pypi.org/project/make/
- 许可证:BSD许可证
摘要
从Jinja2模板创建项目布局。
安装
$ pip install make
用法
下载并解压缩模板:
$ python -m make get source-url target-path $ python -m zipfile -e target-path .
根据下载的模板创建新项目:
$ python -m make project source-path target-path
示例:
下载项目模板。 在本例中,我们将使用一个流行的CookieCutter模板:
$ python -m make get https://github.com/kragniz/cookiecutter-pypackage-minimal/archive/master.zip pypackage.zip $ python -m zipfile -e pypackage.zip .
创建新项目:
$ python -m make project cookiecutter-pypackage-minimal-master New-Project
如何制作自己的项目模板
source-path必须包含名为project.conf的文件或 project.json。选择您喜欢的格式。
project.conf:的格式
[project]name=Apppackage={{project.name.lower().replace(' ','_').replace('-', '_')}}include_tests=json::["none", "pytest"]include_docs=json::["none", "sphinx", "mkdocs"]# this is a comment.# section or keys starting with _ is non-interactive variables_test_dir={{ 'tests' if project.include_tests != 'none' else '' }}[_docs]dir= {%%- if project.include_docs == 'sphinx' -%%} docs {%%- elif project.include_docs == 'mkdocs' -%%} docz {%%- else -%%} {%%- endif -%%}
ini格式允许多行值,但是%必须转义。 允许评论。使用特殊前缀json::序列化后续 文本为json。
project.json的格式:
{"project":{"name":"App","package":"{{project.name.lower().replace(' ','_').replace('-', '_')}}","include_tests":["none","pytest"],"include_docs":["none","sphinx","mkdocs"],"_test_dir":"{{ 'tests' if project.include_tests != 'none' else '' }}"},"_docs":{"dir":"{%- if project.include_docs == 'sphinx' -%}\ndocs\n{%- elif project.include_docs == 'mkdocs' -%}\ndocz\n{%- else -%}\n{%- endif -%}"}}
json格式没有多行,但是您可以在一个中使用多个\n。 行。
源目录可能如下:
/My-Project-Template /{{project.name}} /{{_docs.dir}} conf.py /{{project._test_dir}} /{{project.package}} __init__.py setup.py LICENSE README.rst project.conf
{{project.name}}/setup.py可能看起来像这样:
fromsetuptoolsimportsetup,find_packagesfrom{{project.package}}import__version__asapp_versionsetup(name="{{ project.name }}",version=app_version,packages=find_packages(include=['{{ project.package }}*']),)