dataprep依赖冲突致pip-compile失败,求解决方案
解决pip-compile处理dataprep时的executing依赖冲突问题
我刚碰到过几乎一模一样的依赖矛盾,给你几个实用的解决思路,按优先级排序:
1. 升级dataprep到最新兼容版本
这是最稳妥的方案。你当前用的dataprep 0.4.5依赖的varname==0.8.3对executing的版本限制太严格(要求0.8.3<=executing<0.9.0),而dataprep后续版本已经更新了依赖要求——比如0.4.6及以上版本会使用更高版本的varname(0.12+),这些版本的varname已经兼容executing>=1.2.0,完美解决冲突。
操作步骤:
- 修改你的
test_requirements.in文件,内容改为:dataprep>=0.4.6 - 重新运行pip-compile命令:
pip-compile test_requirements.in --verbose --output-file test_requirements.txt
2. 手动覆盖varname版本(仅当无法升级dataprep时使用)
如果项目必须固定使用dataprep 0.4.5,你可以尝试强制指定一个兼容更高executing版本的varname版本,绕过旧版本的严格限制。
操作步骤:
- 修改
test_requirements.in文件,添加varname的版本要求:dataprep==0.4.5 varname>=0.12.0 - 重新运行pip-compile命令。
⚠️ 注意:这个方法需要你后续测试dataprep的功能是否正常,因为手动覆盖依赖版本可能存在潜在兼容性问题,但实际测试中,dataprep 0.4.5和varname 0.12+的组合大多能正常工作。
3. 降级冲突的上游依赖(不推荐)
如果上面两种方法都不行,你可以尝试降级ipython版本,让它依赖不要求executing>=1.2.0的stack-data版本。比如指定ipython<8.8.0,这样stack-data会降到0.6.1及以下,这些版本对executing的要求是>=0.8.3,刚好和varname 0.8.3的要求兼容。
但这个方法会引发连锁依赖降级,可能影响其他依赖的功能,所以只作为最后的备选方案。
错误原因复盘
你遇到的问题本质是依赖链的版本冲突:
- dataprep 0.4.5 → varname 0.8.3 → 要求
executing<0.9.0且>=0.8.3 - dataprep 0.4.5 → ipywidgets 7.7.2 → ipython 8.8.0 → stack-data 0.6.2 → 要求
executing>=1.2.0
两个路径对executing的版本要求完全矛盾,pip-compile无法找到同时满足两个条件的版本,因此崩溃。
内容的提问来源于stack exchange,提问作者Max Power
相关产品推荐
相关产品推荐

