求助:Tox未激活隔离虚拟环境,复用已激活parentenv执行测试
问题解决方法
问题根源
你在激活的parentenv虚拟环境里运行tox,导致tox继承了当前环境的PATH变量,调用的poetry是父环境里的版本,自然就复用了parentenv来执行测试,而非创建的隔离环境。
解决步骤
避免在激活的虚拟环境中运行tox
要么直接用系统级Python安装tox,要么给tox单独创建一个虚拟环境,直接调用该环境下的tox可执行文件(比如~/tox-env/bin/tox),彻底隔离父环境的干扰。修改tox.ini配置,强制在隔离环境内使用poetry
调整后的配置如下:[tox] envlist = py39, py310 skipsdist = true [testenv] # 移除外部poetry的白名单,改为在隔离环境安装poetry deps = poetry commands = # 使用隔离环境的Python调用poetry,确保环境隔离 {envpython} -m poetry install -v {envpython} -m poetry run pytest here这里的
{envpython}是tox的内置变量,指向当前隔离环境的Python解释器,用它调用poetry就能保证用的是隔离环境里的工具链。验证系统Python版本
确保你的系统上已经安装了py39和py310对应的Python版本,tox需要能找到python3.9、python3.10这些可执行文件,否则无法正确创建对应版本的隔离环境。
内容的提问来源于stack exchange,提问作者Ghost
相关产品推荐
相关产品推荐

