使用pipenv安装含flask-uploads、Werkzeug==0.16.0的依赖报版本冲突如何解决
问题根因
你遇到的是依赖版本互斥问题:
- 为兼容
flask-uploads==0.2.1,你固定了Werkzeug==0.16.0版本 - 你使用的
flask-migrate==3.1.0依赖2.0及以上版本的Flask,而Flask 2.0+强制要求Werkzeug>=2.0,和你固定的0.16.0版本完全不兼容,导致pipenv依赖解析失败。
可选解决方案
方案1:保留现有flask-uploads和Werkzeug版本,降级flask-migrate
如果你不想修改现有上传相关的代码,也不想换库,可以降低flask-migrate到适配低版本Flask的版本:
- 修改requirements.txt,将
flask-migrate==3.1.0替换为flask-migrate==2.7.0,该版本依赖的Flask 1.x系列可完美适配Werkzeug 0.16.0 - 执行命令清除pipenv缓存:
pipenv lock --clear - 重新执行安装命令:
pipenv install -r requirements.txt
方案2:替换废弃的flask-uploads库(更推荐)
flask-uploads已经停止维护多年,兼容性问题频发,完全没必要为了它锁死整个项目的依赖版本,你可以使用完全兼容其API的替代库Flask-Reuploaded,操作如下:
- 修改requirements.txt,删除
flask-uploads==0.2.1和Werkzeug==0.16.0两行,新增Flask-Reuploaded==1.2.0 - 原有调用flask-uploads的代码无需任何修改,可直接适配新库
- 清除pipenv缓存后重新执行安装即可
临时绕过方案(不推荐)
如果只是临时需要快速安装依赖测试,可跳过依赖解析直接安装:pipenv install --skip-lock,但该方法不会生成锁定文件,也无法保证依赖兼容性,仅建议紧急场景使用。
内容的提问来源于stack exchange,提问作者Amin Ba
相关产品推荐
相关产品推荐

