使用Python setuptools排除tests包失败,寻求解决方案
解决setuptools无法排除tests包的问题
你的setup.py里有几个关键参数用错了,导致无法排除tests包,下面是问题分析和修正方案:
问题点分析
package_dir参数误用:find_packages(exclude=["tests"])返回的是要包含的包名称列表,但package_dir需要的是目录与包的映射关系(比如{"": "src"}表示根包在src目录下),不能直接把find_packages的结果赋值给它。entry_points格式错误:这个参数需要是字典格式(比如定义控制台脚本),你写的"src"完全不符合要求,会导致配置无效甚至报错。- 未明确指定包的根目录,
find_packages默认从当前目录找包,而业务代码在src下,会导致包识别混乱。
修正后的setup.py
import setuptools from setuptools import setup, find_packages setuptools.setup( name="awesome-app", version="1.0.0", # 指定包的根目录为src,让find_packages从这里查找包 package_dir={"": "src"}, # 包含所有找到的包,同时排除tests packages=find_packages(exclude=["tests"]), package_data={"": ["*.json"]}, # 示例:如果需要定义控制台入口脚本,按此格式调整(根据实际需求修改) entry_points={ "console_scripts": [ "awesome-app = src.run:main" # 假设run.py里的main函数是程序入口 ] } )
验证操作
重新执行命令:
python -m build --sdist
生成的源码包(dist目录下的.tar.gz文件)里就不会包含tests目录了。
内容的提问来源于stack exchange,提问作者KwarcPL
相关产品推荐
相关产品推荐

