跳转到主要内容

将子文件夹打包成Python发行版

项目描述

将子文件夹打包成Python发行版

  • 免费软件:Apache软件许可证2.0

https://img.shields.io/badge/code%20style-black-000000.svg

安装

pip install setuptools-build-subpackage

您也可以使用以下命令安装开发中的版本:

pip install https://github.com/ashb/setuptools-build-subpackage/archive/master.zip

使用方法

此发行版包含setuptools的Distribution子类,旨在将“子模块”作为独立发行版进行构建。

它旨在与setuptools的声明性配置一起使用 - 即所有内容都在setup.cfg中定义,而不是在setup.py中

例如,以下布局

├── example
│   ├── __init__.py
│   ├── sub_module_a
│   │   ├── __init__.py
│   │   ├── setup.cfg
│   │   └── where.py
│   └── sub_module_b
│       ├── __init__.py
│       ├── setup.cfg
│       └── where.py
└── setup.cfg

这假设我们想要将example.sub_module_aexample.sub_module_b包含在主发行版中,而不是作为单独的发行版发布到PyPI。

这组类确保以下内容

  • 顶级setup.cfg没有加载,而是只加载从子包指定的一个

  • build/文件夹对于每个子包都保持清洁,因此一个构建的文件不会泄漏到另一个中

  • setup.cfg在子文件夹中存在于构建的sdist中,这意味着它可以正常安装。

  • 包括一个stub setup.py文件,以便与较旧的安装程序兼容

配置您的主发行版

首先,您应该排除子包被包含在您的main dist中

setup(
    ...
    packages=find_packages(exclude=['example.sub_module_*'])
)

或者

[options.packages.find]
exclude =
  example.sub_module_*

为您的子包创建一个setup.cfg

子包的要求和信息都来源于setup.cfg - 目前不支持sub-setup.py。 (包含在sdist中的setup.py总是会被生成。如果您需要其他功能,欢迎提交PR。)

在源代码中查看example/sub_module_a/setup.cfg以获取最小示例。

所有文件路径和模块名称都是绝对路径,而不是相对于setup.cfg文件的相对位置。

构建sdist/bdist

运行以下命令

python -m setuptools_build_subpackage \
  --subpackage-folder example/sub_module_b \
  sdist \
  bdist_wheel

这将在dist中创建一个.tar.gz和.whl文件

包含许可注释

如果您需要在生成的setup.py中包含许可注释,请将--license-template选项传递给sdist

python -m setuptools_build_subpackage \
  --subpackage-folder example/sub_module_b \
  sdist --license-template ./LICENSE \
  bdist_wheel

此参数应是一个纯文本许可文件的路径,该文件将被包含在生成的文件的顶部,每行前面都有一个Python注释。

开发

要运行所有测试,请运行

pip install -e '.[devel]' && pytest

还建议您安装pre-commit来检查风格规则

变更日志

1.0.0 (2021-04-23)

  • 在PyPI上的首次发布。

项目详情


下载文件

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

源代码分发

setuptools-build-subpackage-1.0.0.tar.gz (14.3 kB 查看哈希值)

上传时间 源代码

构建分发

setuptools_build_subpackage-1.0.0-py3-none-any.whl (8.2 kB 查看哈希值)

上传时间 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面