Pytest está no PATH mas não foi encontrado

3

Instalei o pytest para testes em python, mas recebo No such file or directory error ao tentar executá-lo a partir de uma pasta de projeto.

Ele está em um local que deve ser acessível através da variável PATH , mas (na melhor das hipóteses de descrever o problema) não está sendo 'encontrado'. Por alguma razão, quando digito 'pytest', meu shell está procurando o local errado; se eu especificar o local, o pytest será executado corretamente.

Procurando em /usr/bin

kirk@kirk:~/develop/foo$ pytest
bash: /usr/bin/pytest: No such file or directory

É, na verdade, em /usr/local/bin , que faz parte do caminho, e funciona quando eu chamo explicitamente esse local.

kirk@kirk:~/develop/foo$ whereis pytest
pytest: /usr/local/bin/pytest

kirk@kirk:~/develop/foo$ echo $PATH
/home/kirk/bin:/home/kirk/.local/bin:/usr/local/sbin:/usr/local/bin:
    /usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

kirk@kirk:~/develop/foo$ /usr/local/bin/pytest
============================= test session starts ==============================
platform linux2 -- Python 2.7.12, pytest-3.0.5, py-1.4.32, pluggy-0.4.0
rootdir: /home/kirk/develop/foo, inifile: pytest.ini
collected 0 items 

========================= no tests ran in 0.00 seconds =========================

O que pode causar esse comportamento?

    
por Kirk Broadhurst 16.12.2016 / 18:58

1 resposta

6

Para evitar pesquisar seu PATH toda vez que um comando executável é chamado, bash salva comandos usados anteriormente em uma tabela de pesquisa ou hash .

Se você mover o executável ou instalar outra versão em outro lugar no PATH , às vezes será necessário forçar o shell a 'esquecer' o antigo local - executando help hash no shell bash:

     -r                forget all remembered locations

ou esquecer apenas um único comando

hash -d <command>

Nesse caso, parece que você teve uma versão anterior de pytest at /usr/bin/pytest : executar hash -r pytest forçou o shell a reexaminar seu PATH e encontrar sua localização atual /usr/local/bin/pytest .

    
por steeldriver 16.12.2016 / 19:19