Windows下tox安装外部库至WSL路径而非自身环境的问题排查
问题原因
在Windows环境下,你用bash -c执行安装命令时,实际调用的是WSL(Windows子系统Linux)的bash环境,这个环境里的pip默认指向WSL系统内的Python实例,完全绕开了tox在Windows本地创建的虚拟环境,所以包才会装到WSL的目录里。
修复方案
方案1:直接使用Windows原生命令(推荐)
去掉bash -c包装,直接用Windows的命令执行安装,tox会自动使用当前虚拟环境里的pip:
修改tox.ini的[testenv:docs]部分的commands:
commands = cd ../subfolder/package_name && pip install .
方案2:保留bash但指定tox虚拟环境的Python路径
如果必须用bash执行复杂逻辑,要明确调用tox虚拟环境的Python(通过tox提供的{envpython}变量),避免用WSL的Python:
修改commands为:
commands = bash -c "cd ../subfolder/package_name && '{envpython}' -m pip install ."
同时记得把bash加入allowlist_externals:
[tox] allowlist_externals = bash cd
额外检查
- 确认Windows系统的PATH里,WSL的
bash.exe路径没有排在Python虚拟环境路径前面(不过核心问题还是命令调用的环境) - 确保tox创建的虚拟环境是Windows本地的,而非WSL下的(你在虚拟环境触发tox的话,这点应该没问题)
内容的提问来源于stack exchange,提问作者QbS
相关产品推荐
相关产品推荐

