Pytest 在 PATH 中但未找到

Pytest 在 PATH 中但未找到

No such file or directory我已经安装了 pytest 用于 Python 测试,但是当我尝试从项目文件夹运行它时出现错误。

它位于可以通过PATH变量访问的位置,但(就我描述问题的能力而言)没有被“找到”。出于某种原因,当我输入“pytest”时,我的 shell 会查找错误的位置;如果我指定位置,那么 pytest 将正常运行。

看看/usr/bin

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

它实际上位于 中/usr/local/bin,是路径的一部分,当我明确调用该位置时它就会起作用。

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

什么原因导致这种行为?

答案1

为了避免PATH每次调用可执行命令时都进行搜索,bash可以将以前使用的命令保存在查找表中,或者哈希

如果您随后移动可执行文件或在其他地方安装另一个版本PATH,有时需要强制 shell“忘记”旧位置 -help hash在 bash shell 中运行:

     -r                forget all remembered locations

或者忘记一个命令

hash -d <command>

在这种情况下,您似乎已经拥有了pytestat的先前版本/usr/bin/pytest:运行hash -r pytest强制 shell 重新检查您的PATH并找到其当前位置/usr/local/bin/pytest

相关内容