Vercel部署Flask应用时python-pushover安装报错如何解决
问题原因
报错核心是python-pushover 0.4版本的安装脚本使用了早已被弃用的use_2to3配置项,setuptools从58.0.0版本开始就彻底移除了对这个配置的支持,Vercel构建时默认拉取最新版setuptools,因此直接触发安装失败。你本地Pipenv虚拟环境没有复现报错,只是因为本地安装的setuptools版本较旧,还保留了对应兼容逻辑而已。
解决方法
按省事程度排序选择即可:
- 换用社区维护的兼容版依赖
原版python-pushover已经停更多年,目前有社区持续维护的兼容分支pushover-python,和原版API完全兼容,不需要修改业务代码:- 本地执行
pipenv uninstall python-pushover卸载旧包 - 执行
pipenv install pushover-python安装新的兼容包 - 重新生成requirements.txt文件,再执行
vercel --prod部署即可,代码中原有的import pushover相关调用逻辑完全不需要调整。
- 本地执行
- 固定构建环境的setuptools版本
如果不想替换现有依赖,可以直接在requirements.txt最顶部加一行配置,强制Vercel安装兼容旧配置的setuptools版本:
修改完成后直接重新部署即可通过构建,该方案属于临时兼容方案,后续如果Vercel调整Python运行时默认环境,可能出现其他兼容问题。setuptools<58.0.0 # 下方保留原有的所有依赖项,比如Flask、python-pushover==0.4等内容 - 本地引入包源码手动打补丁
如果既不想换包也不想降低setuptools版本,可以直接把python-pushover的源码下载到本地项目目录中,删除源码setup.py里的use_2to3=True配置行,直接从本地路径导入依赖,不需要从PyPI拉取安装包,该方案后续维护成本较高,不推荐使用。
内容的提问来源于stack exchange,提问作者Arturo Belano
相关产品推荐
相关产品推荐

