为什么 find_packages(exclude=xxx) 在执行 setup.py sdist 时不起作用?

Why find_packages(exclude=xxx) does not work when doing setup.py sdist?

我正在打包我的源代码,但我不想包含测试和文档,因为它们太大了。

为此,我在 setup.py 中包含:

setup(...
      packages=find_packages(exclude=['tests.*','tests','docs.*','docs']),
      ...
)

python setup.py sdist

我可以看到我的根目录 tests/ 和 docs/ 目录以及里面的所有内容仍然包含在生成的分发中。

好像只有

python setup.py bdist

对排除参数敏感。

为什么?是否可以排除 'setup.py sdist' 的目录?

我通过删除 *.egg-info/ 目录解决了这个问题:似乎这个目录记住了一些旧的设置...

我遇到了同样的问题,但我很笨,误用了 exclude 参数。

如果你有

packages=setuptools.find_packages(exclude="tests")

您将排除目录 "t", "e", "s", "t", "s"

你应该拥有的是:

packages=setuptools.find_packages(exclude=["tests"])