如何在pyproject.toml中配置exclude以排除pkg2.tests子包
如何在pyproject.toml中配置exclude以排除pkg2.tests子包
嘿,我看你已经在尝试用exclude配置来排除pkg2.tests子包啦,不过可能当前的匹配规则需要微调一下才能准确生效,咱们来一步步搞定:
首先,你的项目目录结构里,src/pkg2/tests对应的Python包名是pkg2.tests,而setuptools的exclude参数是基于**包名(点分隔)**来做glob匹配的,不是文件系统路径。
你可以把exclude配置改成下面两种方式之一:
方式1:明确指定要排除的包及子模块
[tool.setuptools.packages.find] where = ["src"] # 基于src目录查找包 include = ["*"] exclude = ["pkg2.tests", "pkg2.tests.*"] # 排除pkg2.tests本身及其所有子模块 namespaces = false
方式2:用glob通配符简化写法
[tool.setuptools.packages.find] where = ["src"] include = ["*"] exclude = ["pkg2.tests*"] # 通配符匹配所有以pkg2.tests开头的包 namespaces = false
这样配置后,setuptools在打包时就会自动跳过pkg2.tests这个子包以及它下面的所有内容啦。如果要验证是否生效,你可以运行python -m pip install .安装包后,查看安装目录里是否还有pkg2/tests相关的文件,或者用python -m setuptools discover命令检查发现的包列表。
备注:内容来源于stack exchange,提问作者Pacific East
相关产品推荐
相关产品推荐

