从Jinja2模板创建项目布局。

make的Python项目详细描述


摘要

从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 }}*']),)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java本机方法的源代码可用吗?   java如何使父方法抛出异常?   java Android以编程方式设置不同屏幕大小/密度的布局   java如何使用一个变量来管理所有客户端请求   java输入一个txt文件,每行有一组数字   json java从jsonobject获取jsonarray错误   java将一个(WAV)写入一个文件只会说一个单词(最后一个单词)   java Telnet忽略原始字节   proguard java。运行桌面应用程序时出现lang.VerifyError   java用左键移动JLabel?   java如何在jText区域验证选项卡?   文件服务器客户端Javasocket编程中的字符串搜索   java省略了JSTL中的最后一个逗号<c:out>   java如何找到if或else代码已执行的次数?   java JavaScript WebSocket send()方法未执行   浮点数声明上的java标识符预期错误   java这是指二进制搜索算法吗?   编译mod at:reobfJar java时的minecraft问题。util。拉链ZipException:重复条目   java检测特定的震动运动(如图所示:D)