能否从Pipfile.lock文件中移除单个依赖且保留其余依赖?
解决方法
- 第一步:先定位该依赖的引入来源,它大概率是你Pipfile中某个直接依赖的传递(子)依赖,执行以下命令查看依赖树:
pipenv graph | grep -A 10 -B 2 <替换为你要移除的依赖名>
从输出中找到依赖该包的上层父依赖。 - 第二步:在Pipfile中给对应的父依赖添加排除规则,比如你排查到父依赖是
requests,要排除的依赖是undesired-dep,就把Pipfile中requests的声明修改为:requests = { version = "*", exclude = ["undesired-dep"] } - 第三步:重新生成lock文件,执行命令清空缓存并基于最新的Pipfile规则计算依赖:
pipenv lock --clear
执行完成后你要移除的依赖就不会再出现在Pipfile.lock中了。 - 第四步:同步虚拟环境,执行命令对齐lock文件的依赖列表:
pipenv sync
该操作会自动卸载虚拟环境中不在lock文件里的多余依赖。
特殊场景处理:如果排查后发现该依赖没有任何父依赖引用,属于历史遗留的冗余条目,可以直接手动删除Pipfile.lock中对应这个包的所有配置行,再执行
pipenv lock更新lock文件即可,不推荐直接删除整个Pipfile.lock,会导致所有依赖版本失去锁定出现兼容性问题。
内容的提问来源于stack exchange,提问作者Justin Reddick
相关产品推荐
相关产品推荐

