'nenhum módulo chamado pip' ao executar tox

Sep 16 2020

Eu tenho um arquivo tox simples executando testes de unidade de python básicos que estou tentando executar em várias versões de python.

[tox]
envlist = py36, py37

[testenv]
setenv =
    PYTHONPATH = {toxinidir}

Usei o pyenv para gerenciar os ambientes. Meu pyenv globalestá definido como sistema. Corri pyenv install 3.5.4 3.6.4para instalar e pyenv local ${version}para carregá-los.

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

Full Tox Output

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

Eu verifiquei a localização do python e vi que há um binário pip em cada pasta do python. Também tentei adicionar pip à requireseção do arquivo tox, definindo pip na depsconfiguração e definindo pip_pretrue para ver se ele instalaria a versão mais recente, mas obtive o mesmo resultado todas as vezes. Não vejo nenhuma outra correspondência com google-fu ou Stack, então presumo que cometi um erro de usuário em algum lugar ...

Respostas

1 SandwichHeat Sep 21 2020 at 06:48

O pyenv estava fazendo algo estranho em meus caminhos. Tive que desativar o virtualenv e depois reativá-lo. Agora o pyenv funciona com todas as versões do python 3 de que preciso. Para qualquer um que leia isso no futuro, quando fiz minha pesquisa sobre esse problema, muitas vezes estava relacionado a algum tipo de problema de caminho.