setuptools.packages.find排除全局模式失效:conftest.py未被排除
问题原因
[tool.setuptools.packages.find]下的exclude参数仅作用于Python包(即包含__init__.py的目录),而非单个.py文件。你配置的*conftest是在匹配名为conftest的包,但你的conftest.py是单个文件,因此这条规则不会生效。
解决方案
根据conftest.py的位置,选择对应的配置方式:
情况1:conftest.py在包目录内(如Foo/或Foo/tests/)
使用exclude-package-data配置排除包内的特定文件:
[tool.setuptools.packages.find] exclude = ['Foo*tests'] include = ['Foo*'] # 排除所有包下的conftest.py [tool.setuptools.exclude-package-data] "*" = ["conftest.py"]
如果只想排除特定子包内的文件(比如Foo/tests/conftest.py),可以指定包名:
[tool.setuptools.exclude-package-data] "Foo.tests" = ["conftest.py"]
情况2:conftest.py在非包目录(如项目根目录)
直接在[tool.setuptools]下添加全局文件排除规则:
[tool.setuptools] exclude = ["conftest.py"] [tool.setuptools.packages.find] exclude = ['Foo*tests'] include = ['Foo*']
内容的提问来源于stack exchange,提问作者Mathieu
相关产品推荐
相关产品推荐

