setuptools:`bdist`包含数据文件但`sdist`不包含

10 投票
1 回答
3044 浏览
提问于 2025-04-16 21:39

我有一个叫做 setup.py 的文件,它长得像这样:

#!/usr/bin/env python
from setuptools import setup, find_packages

setup(
    name="foo",
    version="1.0",
    packages=find_packages(),
    include_package_data=True,
    package_data={
        "": ["*"],
    },
)

还有一个包 foo,它的结构是这样的:

foo/__init__.py
foo/bar.txt

当我运行 setup.py bdist 时,bar.txt 文件会(正确地)包含在发布包里……但是当我使用 setup.py sdist 时,它却没有被包含。

这是怎么回事呢?我是不是对 package_data 的意思理解错了?还是说这是 setuptools 的一个小问题?

1 个回答

12

选择这些文件有不同的来源。package_data 是用来从源代码树安装的。如果你想构建一个源代码包,还需要一个 MANIFEST.in 文件。这个文件里应该包含类似 recursive-include *.txt 的内容,或者你需要的其他文件类型。

撰写回答