Python python 版本和依赖冲突

ddd · 2021年03月20日 · 最后由 ddd 回复于 2021年03月24日 · 2924 次阅读

用 pipenv 给项目创建虚拟环境,指定 python 版本 pipenv --python3.8,告警提示:Warning: Your Pipfile requires python_version 3.7, but you are using 3.8.2 (/Users/admin/.local/share/v/a/bin/python),我重新指定版本 pipenv --python 3.7.7 后,pipenv install pytest requests ,报错提示:raise VersionConflict(dist, req)
pkg_resources.VersionConflict: (importlib-metadata 3.7.3 (/Users/admin/.local/share/virtualenvs/admin-cEVbAC8a/lib/python3.7/site-packages), Requirement.parse('importlib-metadata<3,>=0.12; python_version < "3.8"')),不是很懂 python,百度了没找到解决方法,求教

共收到 4 条回复 时间 点赞

第一个警告,是说你项目里的 Pipfile(定义 pipenv 环境用的)要求用 python 3.7 ,但你实际用的是 3.8 。这只是一个 warning ,有可能是因为你创建项目的 Pipfile 时使用的环境刚好是 3.7,所以自动记录了 3.7。实际应该不影响程序运行。

比较合适的解决方案是手动改下 Pipfile 里 python version 的限制,改为要求大于某个版本,而不是必须等于某个版本。不过这个只是一个警告,应该不至于影响你程序实际运行。

至于第二个,是直接报错,你的某个依赖包里要求 importlib-metadata 这个依赖包版本要 >=0.12, <3 ,而你的实际安装版本是 3.7.3 ,超出范围,所以报错。

解决方法,可以试试卸载掉已有的 importlib-metadata 再运行 pipenv install pytest requests ,让它自动获取正确版本的依赖。不过考虑到你用 pipenv ,安装依赖时使用的应该是纯净环境,还有可能是 2 个依赖包同时依赖了 importlib-metadata 且要求版本不一致。如果用上面的卸载重装无效,得查下是哪两个依赖同时依赖了这个包,然后看怎么调整这两个程序依赖的版本来解决这个问题

ddd #3 · 2021年03月24日 Author
陈恒捷 回复

谢谢,试了确实有效👍

ddd 回复

不客气。

建议后面还是多留意下报错信息吧,我说的这些其实都是报错信息上就有的内容,只是翻译了一下。有些时候不一定遇到问题就直接百度的。

ddd #4 · 2021年03月24日 Author
陈恒捷 回复

嗯嗯,看到报错信息有点懵,一开始没读懂意思😂

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册