python包构建之MANIFEST.IN

MANIFEST.in 是一个用于控制 Python 包分发时包含哪些文件的配置文件。它通常与 setup.py 文件配合使用,以确保在打包和分发时,某些特定的文件或目录能够包含在最终的包中。默认情况下,Python 的打包工具(如 setuptools)会自动包括一些文件,比如 Python 源码文件(.py)、READMELICENSE 等。但是,如果你想要在包中包含其他类型的文件(例如,文档、配置文件、示例数据等),你就需要使用 MANIFEST.in 来指定。

示例 MANIFEST.in

以下是一个典型的 MANIFEST.in 文件示例,它将 README、LICENSE 文件、docs 目录中的 Markdown 文件以及 examples 目录中的 Python 文件包含在包中,同时排除 logs 目录中的所有日志文件:

include README.md
include LICENSE.txt
recursive-include docs *.md
recursive-include examples *.py
global-exclude *.log

总结

MANIFEST.in 文件主要用于精细控制哪些文件应包含在 Python 分发包中。它对于确保包中包含必要的资源文件(如文档、数据文件等)或排除不必要的文件(如测试文件、日志文件等)非常有用。通过正确配置 MANIFEST.in 文件,你可以确保最终用户获得一个完整且干净的包。

工作流程

MANIFEST.in 文件的工作流程主要涉及到 Python 包的打包和分发过程。具体来说,它在生成分发包(如源代码分发包 .tar.gz.zip,以及二进制分发包 .whl)时,控制哪些文件应该包含在最终的分发包中。以下是 MANIFEST.in 文件的工作流程概述:

1. 创建 MANIFEST.in 文件

  • 在项目根目录下创建一个名为 MANIFEST.in 的文件。
  • 在文件中使用不同的命令(如 includeexcludegraftprune 等)指定需要包含或排除的文件和目录。

2. 运行 setup.py 构建分发包

  • 当你运行 python setup.py sdist(用于生成源代码分发包)或 python setup.py bdist_wheel(用于生成二进制分发包)时,setuptools 会读取并解析 setup.pyMANIFEST.in 文件。
  • setuptools 根据 MANIFEST.in 文件中的指令生成一个名为 MANIFEST 的文件。这个文件列出了所有将要包含在分发包中的文件。
  • 然后,setuptools 根据 MANIFEST 文件将指定的文件和目录打包进分发包中。

3. 生成 MANIFEST 文件

  • setuptools 自动生成的 MANIFEST 文件是一个临时文件,列出了所有最终将包含在分发包中的文件。
  • 你可以查看这个文件来了解哪些文件被包含在分发包中,但通常开发者不需要直接修改它。

4. 打包和分发

  • 在生成 MANIFEST 文件后,setuptools 会将这些文件打包为 .tar.gz.zip.whl 等格式的分发包。
  • 这些分发包随后可以上传到 Python Package Index (PyPI) 或其他分发平台,供其他开发者或用户下载和安装。

5. 安装包

  • 当用户使用 pip install package-name 安装包时,pip 会下载分发包并安装其中包含的文件。
  • MANIFEST.in 文件的配置确保了用户在安装包时得到的是一个完整的包,包括了所有必要的文件(如文档、配置文件等),而不包含不必要的文件(如测试文件、开发日志等)。

总结

MANIFEST.in 文件在整个打包和分发过程中扮演着控制包内容的重要角色。通过这个文件,开发者可以精确控制哪些文件应该包含在最终的分发包中,这确保了用户能够获得所需的所有资源,并避免了不必要的文件被包含在包中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值