python -m build python -m zipfile -e dist/mypkg-1.3.2-py3-none-any.whl ./unpacked pip show mypkg
仓库里 setup.py 写 version='1.4.0',pyproject.toml 里也有一段 project.version = "1.3.2"。构建出来的 wheel 文件名是 1.3.2,线上装的还是旧接口。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:有 pyproject.toml 且声明了 project 表时,构建后端以它为准,setup.py 里的同名字段被忽略。两套元数据同时存在,很容易改了一处就以为已经生效。
这次卡住的地方就在「pyproject 与 setup.py」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
处理上按这个顺序:先确认构建后端是 setuptools 还是别的 看 build-system.requires;只保留一处版本来源 建议用动态版本从包内 __version__ 读取;删掉 setup.py 里重复的 name 和 version 字段;构建完解开 wheel 看 METADATA 里的 Version 确认。
确认没问题再收工,wheel 文件名和 METADATA 里的 Version 一致 与仓库 tag 对得上。
