Cookiecutter: 更好的项目模板工具:(2)安装及基础使用
安装
通过python包管理工具
命令行输入
$pip install cookiecutter
或者
# mac os经常会禁止用户全局安装python包
$pip install --user cookiecutter
如果使用的是anaconda,想使用conda安装,可以
$conda config --add channels conda-forge
$conda install cookiecutter
***特别提醒:要保证Python在你的系统PATH路径下,同时保证bin目录在你的系统PATH路径下。特别提醒,anaconda安装的Python,其安装的python执行文件默认不在系统路径下,一般在·$ANACONDA/bin·,请将其放置在系统路径下。
通过系统的包管理
ubuntu
$sudo apt install cookiecutter
mac os
$brew install cookiecutter
Cookiecutter模板基础使用
Cookiecutter模板的形式:
- 模板文件夹
- 模板文件夹的zip压缩文件
- 模板文件夹的git地址
- 模板文件夹的zip压缩文件url地址
- 模板文件夹在cookiecutter目录下
针对具体形式分别使用相同的命令形式:
# 模板文件夹
$ cookiecutter /path/to/template
# 模板文件夹zip压缩包文件
$ cookiecutter /path/to/template.zip
# 模板文件夹的git地址
$ cookiecutter git地址
$ cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git --checkout develop
# 模板文件夹zip压缩文件URL
$ cookiecutter https://example.com/path/to/template.zip
# 模板文件夹在cookiecutter目录(缺省会~/.cookiecutters/目录下)
$ cookiecutter 模板名字
特别针对有密码的zip文件,cookiecutter回给出提示符让你输入密码,如果想跳过密码输入,可以设置COOKIECUTTER_REPO_PASSWORD环境变量,在zip文件需要密码的时候会自动填入该环境变量的值。
整体需要注意的:
- 无论何时你根据一个模板生成了一个项目,生成的项目都会在你的当前路径下
- 克隆的cookiecutters默认存储在
〜/.cookiecutters/目录中
创建Cookiecutter模板
Cookiecutter功能原理是获取模板的源目录树并将其复制到新项目中,将在模板用{{和}}标记中找到的所有名称替换为cookiecutter.json文件中找到的名称。
替换的名称可以是文件名、目录名和文件中的字符串。
使用Cookiecutter,你可以轻松地从一个标准表单引导一个新项目,这意味着在开始一个新项目时,你可以跳过所有常见的错误,拜托琐碎操作带来的时间消耗以快速开始有真正意义的工作。
以下以一个简单的“Hello World”来介绍Cookiecuter的创建过程:
首先,在您的计算机上创建一个目录。这个目录的名称将是您的Cookiecutter模板的名称,但是它并不限制任何其他内容——例如,生成的项目不需要使用模板名称。我们将项目名称设为HelloWorld
$ mkdir HelloWorld
$ cd HelloWorld
我们在此目录中创建要复制到生成项目中的目录树。我们想要为此目录生成一个名称,所以我们将目录名称放在模板标签中:
$ mkdir {{ cookircutter.directory_name }}
$ cd {{ cookircutter.directory_name }}
模板标记中的任何内容都可以放在名称空间中。cookiecutter.directory_name将被从cookiecutter.json文件中查找,因为该项目是由Cookiecutter生成的。
现 我们在将要被复制的目录树中。对于这个最简单的Cookiecutter模板,我们打算只包含一个文件。同样,我们希望从cookiecutter.json中查找文件名,因此我们将其命名为:
$ touch {{cookiecutter.file_name}}.py
(touch会创建一个空文本文件;你可以在编辑器中打开它)。 现在编辑文件,使其包含:
print("Hello, {{cookiecutter.greeting_recipient}}!")
最后,我们来创建cookiecutter.json文件,以便Cookiecutter可以查找我们所需要模板项。
{
"directory_name": "Hello",
"file_name": "Howdy",
"greeting_recipient": "Tacey"
}
现在我们可以运行Cookiecutter并从模板创建一个新项目。切换到要创建新项目的目录。然后运行Cookiecutter并将模板所在的目录传给它。
$ cookiecutter /the/path/of/HelloWorld
directory_name [Hello]:
file_name [Howdy]:
greeting_recipient [Tacey]:
Cookiecutter告诉我们每个项目的默认名称是什么,并为我们提供了用新名称替换该名称的选项。在这种情况下我只是简单的按回车接受所有的默认值~
现在我们生成了一个名为Hello的目录,其中包含一个文件how .py。当我们运行它:
$ python Howdy.py
Hello, Tacey!
Wow!这就完事儿了~
本章结语
到了这里,如果你在开始新项目时发现自己在重复工作,你就已经会知道如何使用cookiecutter消除这种无谓的重复了。对于一些常见的项目,不妨尝试选择使用Cookiecutter: 更好的项目模板工具:(1)简介及可用资源汇总中的某个模板~~~~~
Cookiecutter: 更好的项目模板工具:(2)安装及基础使用的更多相关文章
- Cookiecutter: 更好的项目模板工具:(1)简介及可用资源汇总
原文档地址:https://cookiecutter.readthedocs.io/en/latest/ 本系列只介绍cookiecutter的基础使用,而且会删除与功能使用无关的部分.深度使用及了解 ...
- Cookiecutter: 更好的项目模板工具:(3)高级用法
本文中的Hook就是钩子,钩子就是Hook 使用生成前/生成后钩子脚本 你可以在项目生成之前和/或之后运行Python或Shell脚本. 像这样把它们放进Hook里: cookiecutter-som ...
- 制作VB项目打包工具与安装程序
该原因起于错误429. 当然比起自制我更推荐使用其他的功能完整的打包软件. 犹豫各种原因,导致三分钟热情被浇灭...本来想划四个部分详细讲教程的,大家看成品源码就好了,心好累. http://www. ...
- Vue项目模板--和--webpack自动化构建工具的---项目打包压缩使用
[首先安装node.js]: 1. 从node.js官网下载并安装node,安装过程很简单. 2. npm 版本需要大于 3.0,如果低于此版本需要升级它: # 查看版本 npm -v2.3.0 #升 ...
- Vue.js——60分钟webpack项目模板快速入门
概述 browserify是一个 CommonJS风格的模块管理和打包工具,上一篇我们简单地介绍了Vue.js官方基于browserify构筑的一套开发模板.webpack提供了和browserify ...
- Vue.js——60分钟browserify项目模板快速入门
概述 在之前的一系列vue.js文章,我们都是用传统模式引用vue.js以及其他的js文件的,这在开发时会产生一些问题. 首先,这限定了我们的开发模式是基于页面的,而不是基于组件的,组件的所有代码都直 ...
- Gulp.js - 简单、直观的自动化项目构建工具
Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...
- 20Spring_JdbcTemplatem模板工具类
JdbcTemplate 是Spring提供简化Jdbc开发模板工具类.为了更好的了解整个JdbcTemplate配置数据库连接池的过程,这篇文章不采用配置文件的方式,而是采用最基本的代码 的方式来写 ...
- cocos2d-x创建新项目模板
1.起因 长期使用项目中自带的HelloWorldScene来创建模板工程,不知大家有木有感到厌烦? 我是个懒人,所以就弄了个新的模板工程.这样最起码可以不用每次都把HelloWorldScene删掉 ...
随机推荐
- Linux命令之tar篇
作业一: 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) [root@localhost ~]# cat /etc/passwd /etc/group > ...
- bootstrap常见的面试题
1. 如果让一个元素在pc端显示而在手机端隐藏,下列选项正确的是(b). A. visible-xs-8 hidden-md B. visible-md-8 hidden-xs C. visibl ...
- 分布式一致性hash算法
写在前面 在学习Redis的集群内容时,看到这么一句话:Redis并没有使用一致性hash算法,而是引入哈希槽的概念.而分布式缓存Memcached则是使用分布式一致性hash算法来实现分布式存储. ...
- 国际化之Android设备支持的语种
昨天发了关于iOS支持的语种,文章最后也补了安卓支持语种列表.但最后发现安卓设备支持跟它列的有出入,我重新完全手工整理了一遍. 我将对应的语种在安卓的语言列表里的显示,也全部逐一列出来了,方便大家到时 ...
- ssh 多次登录禁用账号
vi /etc/pam.d/sshd #%PAM-1.0auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_u ...
- 面向对象编程技术的总结和理解(c++)
目录树 1.继承 1.1 基类成员在派生类中的访问属性 1.2继承时导致的二义性 1.3 多基继承 2.虚函数的多态 2.1虚函数的定义 2.2派生类中可以根据需要对虚函数进行重定义 2.3 虚函数的 ...
- Mathematica绘制曲面交线方法
新引入的SliceContourPlot不错 SliceContourPlot3D[y, (1.7 x^2 + y/3 + 0.6 z^2) (1.7 (x - 2)^2 + y/3 + 0.6 z^ ...
- Elasticsearch模糊查询
前缀查询 匹配包含具有指定前缀的项(not analyzed)的字段的文档.前缀查询对应 Lucene 的 PrefixQuery . 案例 GET /_search { "query&qu ...
- 基础008_定浮点转化[floating point IP]
作者:桂. 时间:2018-05-15 21:55:50 链接:http://www.cnblogs.com/xingshansi/p/9042564.html 前言 本文为Xilinx float ...
- MobaXterm v10.9破解
去官网下载个人版 Exeinfo查壳发现无壳 载入OD,右键,字符串智能搜索. Ctrl+F搜索关键词About,找到到FormAbout处,即关于窗体的创建和显示的位置.双击查看汇编代码 程序在窗体 ...