Python项目脚手架模板工具
项目描述
PyScaffold是一个用于启动高质量Python包的项目生成器,适用于在PyPI上共享并通过pip安装。它易于使用,并鼓励采用Python生态系统的最佳工具和实践,帮助您和您的团队保持理智、快乐和高效。最好的部分?它是稳定的,并且已经由成千上万的开发者使用了超过五年!
查看这个演示项目,该演示项目是使用PyScaffold设置的,如果您仍然没有信心,也可以看看这些使用PyScaffold的原因。
注意 - 本文档指的是PyScaffold的最新版本(v4)。请参考v3.3以获取上一个稳定版本。
快速入门
只需选择您最喜欢的安装方法
## Good old pip # (make sure it is up-to-date: pip install -U pip setuptools) pip install pyscaffold ## Conda for the datascience fans conda install -c conda-forge pyscaffold ## Or even pipx for the virtualenv aficionados pipx install pyscaffold
如果您想安装所有PyScaffold的扩展,甚至可以
pip install pyscaffold[all]
(每种方法的详细信息请参见安装文档)
安装完成后,将可用新的putup命令,您只需输入
putup my_project
这将创建一个名为my_project的新文件夹,其中包含一个完美的项目模板,其中包含您进行一些严肃编码所需的一切。
在您的项目目录中执行cd并创建(或激活)一个隔离的开发环境(使用virtualenv、conda或您喜欢的工具)后,您可以执行通常的可编辑安装
pip install -e .
…一切就绪,准备出发!
我们还建议使用tox,这样您就可以利用我们为您设置的自动化任务,例如
tox -e build # to build your package distribution tox -e publish # to test your project uploads correctly in test.pypi.org tox -e publish -- --repository pypi # to release your package to PyPI tox -av # to list all the tasks available
以下图示演示了使用putup的新实验性交互模式设置简单项目的方法。它使用–cirrus标志添加CI支持(通过Cirrus CI),并使用tox运行自动化项目任务,例如构建用于分发的包文件(或发布)。
输入putup -h以了解更多配置选项。PyScaffold假设您已经在PC上安装并设置了Git,这意味着至少您已经配置了您的姓名和电子邮件。
项目模板为您提供了以下功能
配置与打包
所有配置都可以在setup.cfg中完成,例如更改描述、URL、分类器、安装需求等,如setuptools定义。这意味着在大多数情况下,无需修改setup.py。
为了构建源或wheel发行版,只需运行tox -e build(如果您不使用tox,您也可以安装build并运行python -m build)。
包与文件数据
如果setup.cfg中的include_package_data = True,则位于您的包内并由Git跟踪的附加数据(例如图像和文本文件)将自动包含在内。为此无需MANIFEST.in文件。
请注意,在 setup.cfg 中,include_package_data 选项只有在创建 wheel 分发时才会被保证读取。其他分发方法可能会出现意外的行为(例如,即使 include_package_data = False 也始终包含数据文件)。因此,如果您想在您的存储库中拥有数据文件,但又不想将其作为 pip 可安装的软件包的一部分,则最好将它们添加到 src 目录之外的位置(例如,项目根目录中的 files 目录,或者如果您使用它们进行测试,则位于 tests 中)。此外,您还可以通过在 setup.cfg 中的 [options.packages.find] exclude 选项中显式排除它们。
版本控制和 Git 集成
您的项目是一个已初始化的 Git 仓库,并使用 setuptools_scm 来帮助推断项目的版本信息。要使用此功能,您需要使用 MAJOR.MINOR[.PATCH] 格式进行标记,例如 0.0.1 或 0.1。此版本将在构建软件包时使用,并且也可以通过 my_project.__version__ 访问。
通过使用 Git 的 pre-commit 钩子 来释放 Git 的强大功能。此功能通过 --pre-commit 标志提供。在您的项目骨架生成后,确保已安装 pre-commit,例如 pip install pre-commit,然后只需运行 pre-commit install。
还提供了一个默认的 .gitignore 文件;它针对 Python 项目和最常用的工具进行了良好的调整。
Sphinx 文档
PyScaffold 将准备一个包含您开始编写文档所需所有内容的 docs 目录。开始编辑文件 docs/index.rst 以扩展文档。该文档也支持与 Read the Docs 一起使用。
默认启用了 Numpy 和 Google 风格的文档字符串。
如果您系统中已安装 tox,只需运行 tox -e docs 或 tox -e doctests 来编译文档或运行文档测试。
或者,如果您在计算机上安装了 make 和 Sphinx,则可以使用 make -C docs html 来构建文档,并使用 make -C docs doctest 来运行文档测试。只需确保已安装 Sphinx 1.3 或更高版本。
自动化、测试和覆盖率
PyScaffold 依赖于 pytest 来运行在 tests 子目录中定义的所有自动化测试。在 setup.cfg 的 [tool:pytest] 部分中已经定义了一些合理的 pytest 默认标志。使用 pytest-cov 插件自动生成覆盖率报告。您还可以在命令行上提供额外的参数和标志,例如,输入
pytest -h
来显示 pytest 的帮助(需要您的系统中已安装 pytest 或虚拟环境)。
使用 PyScaffold 生成的项目默认支持通过 tox 运行测试,这是一个虚拟环境管理和测试工具,非常方便。如果您运行
tox
在你的项目根目录下,tox 将下载其依赖项,构建包,在虚拟环境中安装它,并使用 pytest 运行测试,以确保一切正常。
JUnit 和 Coverage HTML/XML
对于与持续集成软件的配合使用,可以在 setup.cfg 中激活 JUnit 和 Coverage XML 输出。使用标志 --cirrus 生成 Cirrus CI 配置文件模板 .cirrus.yml,该模板还具有覆盖率和统计系统 Coveralls。
需求和许可证管理
您可以在 setup.cfg 内定义项目的安装需求,例如 install_requires = numpy; scipy。为了避免包依赖问题,通常不将安装需求锁定到任何特定版本,尽管经常使用最小版本,例如 sphinx>=1.3,以及/或最大版本,例如 pandas<0.12,按照 语义版本控制 进行。
使用 --license 标志可以轻松选择来自 choosealicense.com 的所有许可证。
扩展
PyScaffold 包含几个扩展
如果您想为 数据科学 任务设置项目,只需在安装 pyscaffoldext-dsproject 后使用 --dsproject 即可。
使用 --markdown 标志,并在安装 pyscaffoldext-markdown 后,以 Markdown 格式创建 README.md 而不是 README.rst。
使用标志 --django 创建 Django 项目,该标志相当于 django-admin startproject my_project,并增强了 PyScaffold 的功能(需要 pyscaffoldext-django)。
……还有更多,如使用 --gitlab 创建 GitLab 所需的文件,--travis 用于 Travis CI(见 pyscaffoldext-travis),或 --cookiecutter 用于 Cookiecutter 集成(见 pyscaffoldext-cookiecutter)。
在 PyScaffold 组织 中可以找到更多扩展,并考虑贡献您自己的,这很容易!在安装 pyscaffoldext-custom-extension 后,可以使用 --custom-extension 选项快速生成扩展的模板。
所有扩展都可以使用 pip install pyscaffoldext-NAME 轻松安装。
轻松更新
通过在 PyScaffold 发布新版本时应用 putup --update my_project 来保持您项目脚手架的更新。更新将仅覆盖用户很少更改的文件,如 setup.py。要更新所有文件,请使用 --update --force。可以使用 putup --force existing_project 将未使用 PyScaffold 设置的项目转换为现有项目。强制选项完全安全使用,因为现有项目的 git 仓库不会被更改!
项目详细信息
下载文件
下载适用于您的平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。