运行tox时“没有名为pip的模块”

问题描述

我有一个简单的tox文件,它正在运行基本的python单元测试,并试图针对多个python版本运行。

[tox]
envlist = py36,py37

[testenv]
setenv =
    PYTHONPATH = {toxinidir}

我用pyenv来管理环境。我的pyenv global已设置为系统。我运行pyenv install 3.5.4 3.6.4进行安装,并运行pyenv local ${version}进行加载。

ERROR: py36: InvocationError for command /Users/$user/workspace/${proj}/.tox/py36/bin/python -m pip freeze (exited with code 1)

py36-11.log

action: py36,msg: envreport
cwd: /Users/$user/workspace/${proj}
cmd: /Users/$user/workspace/${proj}/.tox/py36/bin/python -m pip freeze
/Users/$user/workspace/${proj}/.tox/py36/bin/python: No module named pip

全毒输出

GLOB sdist-make: /Users/${user}/workspace/${proj}/setup.py
py36 inst-nodeps: /Users/${user}/workspace/${proj}/.tox/.tmp/package/1/tally_ho-0.1.0.zip
ERROR: invocation failed (exit code 1),logfile: /Users/${user}/workspace/${proj}/.tox/py36/log/py36-11.log
================================================================================================================================== log start ===================================================================================================================================
/Users/${user}/workspace/${proj}/.tox/py36/bin/python: No module named pip

=================================================================================================================================== log end ====================================================================================================================================
py37 inst-nodeps: /Users/${user}/workspace/${proj}/.tox/.tmp/package/1/tally_ho-0.1.0.zip
py37 installed: attrs==20.2.0,importlib-metadata==1.7.0,iniconfig==1.0.1,more-itertools==8.5.0,packaging==20.4,pluggy==0.13.1,py==1.9.0,pyparsing==2.4.7,pytest==6.0.2,six==1.15.0,${proj}==0.1.0,toml==0.10.1,zipp==3.1.0
py37 run-test-pre: PYTHONHASHSEED='1245480162'
py37 run-test: commands[0] | pytest
============================================================================================================================= test session starts ==============================================================================================================================
platform darwin -- Python 3.7.7,pytest-6.0.2,py-1.9.0,pluggy-0.13.1
cachedir: .tox/py37/.pytest_cache
rootdir: /Users/${user}/workspace/${proj}
collected 22 items

tests/test_cmd.py .......                                                                                                                                                                                                                                                [ 31%]
tests/test_config.py ....                                                                                                                                                                                                                                                [ 50%]
tests/test_proj.py ...........                                                                                                                                                                                                                                       [100%]

============================================================================================================================== 22 passed in 0.19s ==============================================================================================================================
___________________________________________________________________________________________________________________________________ summary ____________________________________________________________________________________________________________________________________
ERROR:   py36: InvocationError for command /Users/${user}/workspace/${proj}/.tox/py36/bin/python -m pip freeze (exited with code 1)
$ pyenv --version                                                      
pyenv 1.2.1

$ tox --version                                                        
3.20.0 imported from /Users/${user}/.virtualenvs/${proj}/lib/python3.7/site-packages/tox/__init__.py

$pyenv local                                                          
3.6.4

我检查了python的位置,发现每个python文件夹中都有一个pip二进制文件。我还尝试将pip添加到tox文件的require部分,在deps设置上设置pip并将pip_pre设置为true,以查看是否会安装最新版本,但是我得到了每次相同的结果。我看不到与google-fu或Stack的其他匹配项,因此我假设我在某个地方犯了用户错误...

解决方法

pyenv一直在做一些奇怪的事情。我必须先停用virtualenv,然后再将其重新激活。现在pyenv可以使用我需要的所有python 3版本。对于以后阅读此书的任何人,当我对这个问题进行研究时,它通常与某种路径问题有关。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...