setuptools构建Python wheel配置license_files时报单字符许可文件找不到警告
许可文件打包异常修复方案
核心问题原因
这类查找单个字符文件的警告,是setuptools版本与配置写法不兼容导致的经典问题:
setuptools 61.0.0 版本之前,license_files参数仅支持传入文件路径列表。如果直接给该参数赋值单个字符串,旧版本的setuptools会把传入的字符串当作可迭代对象逐位拆分,把每个单独的字符都当成独立文件名去查找。你日志里提示找不到的L、C、N、t,刚好就是LICENSE.txt拆分出来的字符,完全匹配这个异常机制。
具体修复步骤
- 升级本地构建工具链,执行命令:
pip install --upgrade setuptools wheel
建议将setuptools升级到61.0.0及以上版本,该版本开始原生支持给license_files传单个字符串路径。 - 修改
setup.py为全版本兼容的配置
把原来的单字符串赋值写法,调整为列表传参形式,从根源上避免字符串被拆分遍历的问题:setup( ..., license_files=['LICENSE.txt'], ... ) - 重新执行构建命令
python setup.py bdist_wheel,验证结果
确认构建日志不再出现之前的单字符查找警告,构建完成后可直接解压生成的whl包,检查包根目录已包含LICENSE.txt,即代表配置生效。
兜底排查
如果调整后依然提示找不到许可文件,先确认执行构建命令的工作路径就是项目根目录,和setup.py、LICENSE.txt处于同一层级,避免相对路径偏移导致文件定位失败。
内容的提问来源于stack exchange,提问作者Chaitanya Bapat
相关产品推荐
相关产品推荐

