Python打包文件详解 | AI生成和翻译

Home 2025.12

问题:Python 中的 MANIFEST.in 和 setup.py 是什么,它们如何工作?

答案:

在 Python 中,当创建可分发包(例如,上传到 PyPI 或共享代码)时,通常会使用基于较旧的 setup.py 的打包系统(仍然广泛使用,尽管正在向 pyproject.toml 发展)的两个重要文件:

1. setup.py

2. MANIFEST.in

它们如何协同工作的总结

步骤 使用文件 结果
定义包元数据和依赖项 setup.py 安装/构建必需
指定要包含在源代码 tarball 中的非 Python 文件 MANIFEST.in 仅影响 sdist(源代码分发)
构建源代码分发包 python setup.py sdist 同时使用这两个文件

现代替代方案(2020 年后推荐)

使用 pyproject.toml + setuptools 声明性配置,而不是 setup.pyMANIFEST.in

# pyproject.toml
[build-system]
requires = ["setuptools>=61", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "my-package"
# ... metadata ...

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.package-data]
"my_package" = ["*.txt", "data/*.json"]

这完全避免了 MANIFEST.in,使打包更清晰。

简而言之

这两个在旧项目中仍然很常见,但新项目应优先选择 pyproject.toml


Back

x-ai/grok-4.1-fast

Donate