Python打包:如何避免用户使用错误Python版本安装我的包
解决方案
python_requires配置本身可实现安装阶段的Python版本校验,出现不生效问题均为打包、上传流程或版本号配置错误导致,按以下步骤修复即可:
- 确认配置正确性
如果你仍然使用setup.py管理配置,确认配置项写法正确:
如果使用新标准setup( # 其他配置项 python_requires=">=3.8.0", )pyproject.toml管理配置,确保[project]区块下存在对应配置:[project] # 其他配置项 requires-python = ">=3.8.0" - 升级构建依赖并清理旧构建产物
先升级相关依赖:pip install --upgrade setuptools wheel build twine
彻底删除本地之前的构建缓存:rm -rf dist build *.egg-info(Windows环境可手动删除对应文件夹) - 重新构建包
执行构建命令同时生成源码包和wheel包:python -m build - 校验构建产物元数据
构建完成后检查dist目录下的文件:- 解压后缀为
.whl的wheel包,打开解压后的METADATA文件,确认存在Requires-Python: >=3.8.0配置 - 解压后缀为
.tar.gz的源码包,打开解压后的PKG-INFO文件,确认存在Requires-Python: >=3.8.0配置
- 解压后缀为
- 升级版本号后重新上传到PyPI
PyPI不允许覆盖已上传的同版本号包,必须先修改setup.py或pyproject.toml中的版本号,再执行上传命令:twine upload dist/* - 效果校验
回到Python3.7的COLAB环境,指定安装你刚上传的新版本包:pip install 你的包名==新版本号
此时pip会在安装阶段直接抛出版本不兼容错误:ERROR: Package '你的包名' requires a different Python: 3.7.x not in '>=3.8.0',即为配置生效。
内容的提问来源于stack exchange,提问作者TFC
相关产品推荐
相关产品推荐

