8 votes

Pytest est dans PATH mais non trouvé

J'ai installé pytest pour les tests Python, mais j'obtiens No such file or directory erreur lorsqu'on essaie simplement de l'exécuter à partir d'un dossier de projet.

C'est dans un endroit qui devrait être accessible par le biais de la PATH mais (dans la mesure où je peux décrire le problème) elle n'est pas "trouvée". Pour une raison quelconque, lorsque je tape 'pytest', mon Shell cherche le mauvais emplacement ; si je spécifie l'emplacement, pytest s'exécutera correctement.

Regarder à l'intérieur /usr/bin

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

C'est en fait dans /usr/local/bin qui fait partie du chemin, et fonctionne lorsque j'appelle explicitement cet emplacement.

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 =========================

Qu'est-ce qui peut provoquer ce comportement ?

13voto

steeldriver Points 118154

Pour éviter de chercher votre PATH chaque fois qu'une commande exécutable est appelée, bash sauvegarde les commandes utilisées précédemment dans une table de consultation, ou dièse .

Si, par la suite, vous déplacez l'exécutable ou installez une autre version ailleurs sur le site de l PATH il est parfois nécessaire de forcer le Shell à 'oublier' l'ancien emplacement - en exécutant help hash dans le Shell de bash :

     -r                forget all remembered locations

ou pour oublier une seule commande

hash -d <command>

Dans ce cas, il semble que vous ayez eu une version précédente de pytest à l'adresse /usr/bin/pytest : course hash -r pytest a forcé le Shell à réexaminer votre PATH et trouver sa position actuelle /usr/local/bin/pytest .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X