跳转到主要内容

Python项目脚手架模板工具

项目描述

Built Status ReadTheDocs Coveralls PyPI-Server Conda-Forge Monthly Downloads Sponsor me Twitter PyScaffold

PyScaffold logo

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并创建(或激活)一个隔离的开发环境(使用virtualenvconda或您喜欢的工具)后,您可以执行通常的可编辑安装

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运行自动化项目任务,例如构建用于分发的包文件(或发布)。

Creating a simple package with PyScaffold

输入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.10.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 docstox -e doctests 来编译文档或运行文档测试。

或者,如果您在计算机上安装了 makeSphinx,则可以使用 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 包含几个扩展

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 仓库不会被更改!

项目详细信息


发行历史 发布通知 | RSS 源

下载文件

下载适用于您的平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源代码分发

pyscaffold-4.6.tar.gz (5.2 MB 查看哈希值)

上传时间 源代码

构建分发

PyScaffold-4.6-py3-none-any.whl (175.0 kB 查看哈希值)

上传时间 Python 3

由以下机构支持