用cookiecutter来创建新项目

栏目: Python · 发布时间: 7年前

内容简介:IDE都会有一套生成新项目的向导(Wizard),通过点点点,就可以得到一个可以运行的某类程序。 这样的程序,具备了推荐的项目结构,配置的基本的编译、打包、测试,尽管功能只是一个令人惋惜的是,Python的IDE——PyCharm并不自带这个功能。 这其中,也有Python项目千变万化的因素。 Python的适用范围太广,从桌面到服务器,从游戏到数据分析,都做一套显然投入太大。 而Python又是一门解释型语言,随便写个文件也能直接执行,似乎没有这个必要。然而,我要说,还是有必要的!

IDE都会有一套生成新项目的向导(Wizard),通过点点点,就可以得到一个可以运行的某类程序。 这样的程序,具备了推荐的项目结构,配置的基本的编译、打包、测试,尽管功能只是一个 helloworld 。 这个功能,极大地降低了初学者的进入门槛,也统一了某类项目的文件结构,是一个了不起的进步。 最早使用这类手段的,似乎是Visual Studio。

令人惋惜的是,Python的IDE——PyCharm并不自带这个功能。 这其中,也有 Python 项目千变万化的因素。 Python的适用范围太广,从桌面到服务器,从游戏到数据分析,都做一套显然投入太大。 而Python又是一门解释型语言,随便写个文件也能直接执行,似乎没有这个必要。

然而,我要说,还是有必要的!

因为Python系缺失一个Wizard,也缺少项目结构的标准,于是出现了 cookiecutter 。 这是一个项目生成器,也可称为引擎,因为它只完成了最核心的功能。 真正决定一个项目长什么样的模板,却可以自由定制。 也因此,它能生成任何一种语言的项目。

安装cookiecutter

pip install cookiecutter

cookiecutter 就是一个已经发布的Python包,因此用Python的手段可以直接安装。

对于非Python系的 程序员 来说,也可以使用包管理器的方式安装。

# For Mac
brew install cookiecutter
# For Debian/Ubuntu
sudo apt install cookiecutter

使用cookiecutter

首先,寻找一个合适的 cookiecutter 项目。 最主要的方式,就是访问其GitHub主页的 A Pantry Full of Cookiecutters

如果挑选完毕(这里以 cookiecutter-pypackage 为例),则可直接执行 cookiecutter 生成项目。

$ cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git
full_name [Yan QiDong]:
email [yanqd0@outlook.com]:
github_username [yanqd0]:
project_name [Python Boilerplate]: trycookie
project_slug [trycookie]:
project_short_description [Python Boilerplate contains all the boilerplate you need to create a Python package.]: A description
pypi_username [yanqd0]:
version [0.1.0]:
use_pytest [n]:
use_pypi_deployment_with_travis [y]:
add_pyup_badge [n]:
Select command_line_interface:
1 - Click
2 - No command-line interface
Choose from 1, 2 (1, 2) [1]:
create_author_file [y]:
Select open_source_license:
1 - MIT license
2 - BSD license
3 - ISC license
4 - Apache Software License 2.0
5 - GNU General Public License v3
6 - Not open source
Choose from 1, 2, 3, 4, 5, 6 (1, 2, 3, 4, 5, 6) [1]:

在项目生成过程中,会产生一些提示,需要输入对应信息。 这和各类Wizard的GUI中,填写项目名、包名什么的,是同类操作。 以上是,除了项目名叫 trycookie ,基本都选默认的一个结果。

查看项目结构:

$ tree -a trycookie
trycookie
├── .editorconfig
├── .github
│   └── ISSUE_TEMPLATE.md
├── .gitignore
├── .travis.yml
├── AUTHORS.rst
├── CONTRIBUTING.rst
├── HISTORY.rst
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.rst
├── docs
│   ├── Makefile
│   ├── authors.rst
│   ├── conf.py
│   ├── contributing.rst
│   ├── history.rst
│   ├── index.rst
│   ├── installation.rst
│   ├── make.bat
│   ├── readme.rst
│   └── usage.rst
├── requirements_dev.txt
├── setup.cfg
├── setup.py
├── tests
│   ├── __init__.py
│   └── test_trycookie.py
├── tox.ini
└── trycookie
    ├── __init__.py
    ├── cli.py
    └── trycookie.py

4 directories, 30 files

如此庞大而复杂的一个项目结构,融合了作者 audreyr 对一个开源PyPI项目的理解。 虽然未必适用于任何一个人,但对于什么也不懂的菜鸟来说,却无疑是福音。

基本原理

cookiecutter 的工作原理,是先下载一个模板项目,然后替换模板项目的某些内容,生成新的项目。 在以上的示例中, https://github.com/audreyr/cookiecutter-pypackage.git 就是一个项目的Git链接。 这可以换成任何一个可以用 git clone 来下载的链接,包括各种私有Git托管平台。

如果是GitHub,还可以用以下的等效形式:

cookiecutter gh:audreyr/cookiecutter-pypackage

cookiecutter 的简短形式,支持以下三种平台。

Platform abbreviation
GitHub gh
BitBucket bb
GitLab gl

cookiecutter 也支持Mercurial( hg )。

cookiecutter hg+ssh://hg@bitbucket.org/audreyr/cookiecutter-pypackage

使用过模板的项目,默认都已经被下载到 ~/.cookiecutter 目录下。 如果需要再次使用,而又无需更新,可以直接用项目名。

cookiecutter cookiecutter-pypackage

利用这个特点,可以先用各种手段,把模板项目下载到 ~/.cookiecutter 目录下,再来使用。

参考: Usage — cookiecutter 1.6.0 documentation

配置文件

默认情况下, ~/.cookiecutterrc 就是配置文件。 它实际上是一个YAML文件。 以下是孤的配置文件示例。

# vim: set filetype=yaml:

default_context:
  full_name: "Yan QiDong"
  email: "yanqd0@outlook.com"
  github_username: "yanqd0"
cookiecutters_dir: "~/.cookiecutters/"
abbreviations:
    pp: https://github.com/audreyr/cookiecutter-pypackage.git
    gh: https://github.com/{0}.git

可配置项中, default_context 是设置生成项目时,一些提示信息的默认参数。 cookiecutters_dir 则是项目的下载位置,一般默认就好。 abbreviations 是自定义简短形式,属于高级定制功能,仅适用于重度用户。 通常,填一填 default_context 就好。

如果对 ~/.cookiecutterrc 这个配置文件的名称和位置不满意, 可以通过环境变量 COOKIECUTTER_CONFIG , 或者在命令行指定参数 --config-file 来指定新的配置文件。

参考: User Config (0.7.0+) — cookiecutter 1.6.0 documentation

总结

cookiecutter 是一个简单好用的项目生成器引擎,并且已经有很多各种类型的模板。 除了Python项目,还有很多其它语言的项目模板。 它可以极大地省去一个项目初始化的重复劳动,也可以帮助菜鸟程序员成长。

当然,如果不满意,还是可以自己修改、定制模板的。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Book of CSS3

The Book of CSS3

Peter Gasston / No Starch Press / 2011-5-13 / USD 34.95

CSS3 is the technology behind most of the eye-catching visuals on the Web today, but the official documentation can be dry and hard to follow. Luckily, The Book of CSS3 distills the heady technical la......一起来看看 《The Book of CSS3》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具