【问题标题】:Why find_packages(exclude=xxx) does not work when doing setup.py sdist?为什么在 setup.py sdist 时 find_packages(exclude=xxx) 不起作用?
【发布时间】:2018-07-31 21:21:45
【问题描述】:

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

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

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

做的时候

python setup.py sdist

我可以看到我的根 tests/ 和 docs/ 目录以及其中的所有内容仍包含在生成的发行版中。

好像只有

python setup.py bdist

对 exclude 参数很敏感。

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

【问题讨论】:

    标签: python setup.py


    【解决方案1】:

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

    【讨论】:

    • 这很奇怪。你的回答为我解决了这个问题,我不得不绕了很长一段时间尝试各种不同的解决方案
    • 非常有帮助。请将此作为答案。谢谢!
    • 对于打算递归排除包的人,还需要排除通配符变体。
    • 对于发现此问题的任何人:在将 recursive-exclude tests * 添加到 MANIFEST.in 文件和 ["tests", "tests.*"] 以排除后,我必须删除 *.egg-info 以及 build/ 目录的内容.
    • 对我来说是一样的,但我需要删除 build 文件夹。
    【解决方案2】:

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

    如果你有

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

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

    你应该拥有的是:

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

    【讨论】:

      猜你喜欢
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 2010-12-09
      相关资源
      最近更新 更多