• cookiecutter工具


    cookiecutter · PyPI官网

    一、安装

    1、通过python包管理工具

    $pip install cookiecutter

    如果使用的是 conda,想使用conda安装

    1. $conda config --add channels conda-forge
    2. $conda install cookiecutter

    添加环境变量:

    通常path在UNIX和macOS上是 ~/.local/,在Windows上是 %APPDATA%\Python。

    UNIX 和 macOS

    对于 bash shell,将以下内容添加到  .bash_profile 文件(针对其他 shell 进行调整):

    1. # Add ~/.local/ to PATH
    2. $export PATH=$HOME/.local/bin:$PATH
    3. $source ~/.bash_profile  #重新加载

    Windows

    在计算机上搜索“环境变量”(在Windows 10上,它位于“系统属性–>高级”下)

    示例段应该类似于 %APPDATA%\Python\Pyth3x\Scripts

    需要重新启动命令行加载环境变量。有关完整详细信息,请参阅配置 Python( Windows )

    注意:要保证Python在你的系统PATH路径下,同时保证bin目录在你的系统PATH路径下。

    特别提醒anaconda安装的Python,其安装的python执行文件默认不在系统路径下,一般在$ANACONDA/bin,请将其放置在系统路径下。

    2、通过系统的包管理

    ubuntu

    $sudo apt install cookiecutter

    mac os

    $brew install cookiecutter

    备用安装

    Pipx(Linux、OSX 和 Windows):

    $pipx install cookiecutter

    0.7.0及以后的版本中:

    1、Cookiecutter 在生成项目后不再删除克隆的 repo。

    2、克隆的 repos 保存到 ~/.cookiecutters/ 中。

    3、可以选择创建一个 ~/.cookiecutterrc 配置文件。

    cookiecutter升级:

    python3 -m pip install --upgrade cookiecutter

    二、使用 

    cookiecutter · PyPI官网

    cookiecutter.json中定义的变量在模板中要使用 {{cookiecutter.repo_name}}、{{cookiecutter.service_name}}、{{cookiecutter.file_name}}.py 进行替换填写,以便于生成项目的时候进行渲染。如果在命令行的参数使用 -o 选项指定,项目则生成到当前目录或目标目录

    1. {
    2. "repo_name": "helloworld",
    3. "file_name": "cutter",
    4. "service_name": "register"
    5. }

    1、已有模板

    1、对于远程的模板:

    1. # 直接使用Github上的远程模板创建项目
    2. $ cookiecutter https://github.com/audreyfeldroy/cookiecutter-pypackage
    3. # 为了简洁起见,GitHub上的repo可以使用“gh”前缀
    4. $ cookiecutter gh:audreyfeldroy/cookiecutter-pypackage

    2、使用本地模板:

    1. # 在当前工作目录中, 从本地 cookiecutter-package/ template(模板)创建项目
    2. # 示例:从GitHub上git clone一个项目模板到本地,然后根据自己需要对项目模板进行修改
    3. 1、首先,克隆一个 Cookiecutter 项目模板到本地:
    4. $ git clone git@github.com:audreyr/cookiecutter-pypackage.git
    5. 2、修改cookiecutter.json中定义的变量
    6. 3、cookiecutter.json中定义的变量在模板中要使用 {{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}.py 形式进行替换填写
    7. #您可能还想创建一个 repo,将其命名为不同的名称,并将其作为自己的新 Cookiecutter 项目模板进行推送,以方便将来使用。
    8. 4、然后从项目模板生成您的项目:
    9. # 唯一的参数是输入目录。(输出目录是通过渲染生成的,不能和输入目录相同。)
    10. $ cookiecutter cookiecutter-pypackage/

    3、从Python使用

    1. from cookiecutter.main import cookiecutter
    2. # 从 cookiecutter-pypackage/ template 创建项目
    3. cookiecutter('cookiecutter-pypackage/')
    4. # 从 cookiecutter-pypackage.git repo template 创建项目
    5. cookiecutter('https://github.com/audreyfeldroy/cookiecutter-pypackage.git')

    如果不使用 --no-input参数, 将提示输入:

    • 提示在 cookiecutter.json中填写的key
    • 默认的是 cookiecutter.json中填写的value
    • 提示按顺序显示

    ~/.cookiecutterrc文件支持跨平台

    1. default_context:
    2. full_name: "Audrey Roy Greenfeld"
    3. email: "audreyr@gmail.com"
    4. github_username: "audreyfeldroy"
    5. cookiecutters_dir: "~/.cookiecutters/"

    Cookiecutter(克隆的 Cookiecutter项目模板)默认放在~/.cookiecutters/中,或者指定cookiecutters_dir目录。

    如果您已经将cookiecutter克隆到~/.cookiecutters/中,您可以通过目录名引用它:

    1. # Clone cookiecutter-pypackage
    2. $ cookiecutter gh:audreyfeldroy/cookiecutter-pypackage
    3. # Now you can use the already cloned cookiecutter by name
    4. $ cookiecutter cookiecutter-pypackage

    默认上下文:指定要在生成项目时用作默认值的键/值对。

    使用命令行参数注入额外的上下文:

    直接访问Cookie执行器API允许注入额外的上下文。

    本地项目的路径可以指定为绝对路径或相对路径。

    如果使用-o选项指定,项目则生成到当前目录或目标目录

    cookiecutter --no-input gh:msabramo/cookiecutter-supervisor program_name = foobar startsecs = 10

    2、创建模板

    • 支持无限级别的目录嵌套。

    • 模板100%是用Jinja2完成的。

    • 目录名和文件名都可以模板化。例如:

      1. {{cookiecutter.repo_name}}
      2. {{cookiecutter.service_name}}
      3. {{cookiecutter.file_name}}.py
    • 在 cookiecutter.json 文件中简单的定义模板变量。例如:
    1. {
    2. "full_name": "Audrey Roy Greenfeld",
    3. "email": "audreyr@gmail.com",
    4. "project_name": "Complexity",
    5. "repo_name": "complexity",
    6. "project_short_description": "Refreshingly simple static site generator.",
    7. "release_date": "2013-07-10",
    8. "year": "2013",
    9. "version": "0.1.1"
    10. }

    3、cookiecutter目录中的结构

    Cookiecutter 1.7 中的新功能

    Cookiecutter 引入了在一个存储库或 zip 文件中组织多个模板的能力,并通过目录将它们分开。这允许对一般文件使用符号链接。这是一个演示此功能的示例存储库:

    1. https://github.com/user/repo-name.git
    2. ├── directory1-name/
    3. | ├── {{cookiecutter.project_slug}}/
    4. | └── cookiecutter.json
    5. └── directory2-name/
    6. ├── {{cookiecutter.project_slug}}/
    7. └── cookiecutter.json

    要使用子目录中的一个模板,请使用 --directory 选项

    cookiecutter https://github.com/user/repo-name.git --directory="directory1-name"

  • 相关阅读:
    教程图文详解 - 数据通信基础(第二章)
    服务名无效。 请键入 NET HELPMSG 2185以获得更多的帮助
    VsCode Ctrl+.修复无效
    B树、B+树、红黑树的定义、之间的区别、优缺点、数据结构、应用等
    Python学习基础笔记五——列表
    NVidia Jetson Tx2(其他几个型号也通用包括ubuntu18.04)开机启动慢解决加速记录
    Java流程控制
    Chromium浏览器启动参数
    Redis入门
    PICO《轻世界》体验:随心畅玩,洒脱创作,潜力无限
  • 原文地址:https://blog.csdn.net/fbbqt/article/details/127748263