Poetry移除virtualenv致tox测试失败:依赖排查与阻止移除求助
问题解决:Poetry在tox环境中移除virtualenv导致安装失败
1. 定位依赖virtualenv的第三方包
用Poetry的内置命令直接追踪依赖链:
- 执行命令:
poetry why virtualenv
该命令会输出所有引入virtualenv的包及完整依赖路径(例如foo -> bar -> virtualenv),精准定位根源依赖。 - 若需要查看全量依赖树,可执行:
poetry show --tree,在输出中搜索virtualenv节点即可找到其父依赖。
2. 禁止Poetry移除virtualenv的方案
方案一:将virtualenv设为直接依赖
执行命令:poetry add virtualenv
把virtualenv加入项目直接依赖后,Poetry会将其视为项目必需包,安装过程中不会再移除它,从根源避免依赖缺失。
方案二:修改Poetry安装命令参数
调整tox.ini中的命令,添加--remove-untracked=false参数,禁止移除lock文件中记录的依赖:
[testenv] skip_install = true deps = poetry commands = poetry install -E test -vvv --remove-untracked=false
该参数会让Poetry仅安装/更新所需包,保留所有lock文件中已存在的依赖(包括virtualenv)。
方案三:调整tox的依赖安装逻辑
绕开Poetry对环境的修改,改用导出依赖+pip安装的方式:
[testenv] skip_install = true deps = poetry commands = poetry export -E test --format=requirements.txt --output=requirements-test.txt pip install -r requirements-test.txt
这种方式利用tox已创建的环境,直接通过pip安装依赖,避免Poetry误删virtualenv的问题。
内容的提问来源于stack exchange,提问作者aaron
相关产品推荐
相关产品推荐

