`pip` 和 `pip3` 的混淆行为

`pip` 和 `pip3` 的混淆行为

我最初是python3-pip通过安装的apt,但错误地使用而不是用户安装来安装软件包sudo。我遇到了大量带有回溯和导入错误的错误,因此我尝试从系统中完全删除 pip 并重新开始。

然而,即使卸载了所有 pip 包和apt purge python3-pip

  • pip,,当我按下 Tab 键时(在新的 shell 上,重新启动后) pip3,它pip3.6仍然显示在我的 Tab 完成建议中。
  • 我在以下位置找到了几个 Python 存根脚本~/.local/bin/
    • ~/.local/bin/pip
    • ~/.local/bin/pip3
    • ~/.local/bin/pip3.6

这些脚本每个只有大约 10 行,并且只包含 pip 导入。但是,当我将这些文件移出此目录并使用 重新安装时apt install python3-pip,这些文件在安装过程中不会重新生成。

我很困惑到底发生了什么,pip 使用了什么样的层次结构;这一切对我来说似乎有点神秘。它的目的是什么?~/.local/bin/为什么pip3只在某些时候用脚本填充它?

我该怎么做才能确保pip3在我安装/使用它之后所做的任何更改都被删除/恢复?

答案1

经过进一步研究,我发现 bash 有时会将脚本缓存在 中,PATH并将其放入 中~/.local/bin。因此,即使在 之后apt purge,当用户尝试使用制表符完成时,程序似乎仍然是这样的。

您可以使用以下命令检查某些内容是否正在被哈希处理:

$ type pip3

你可以使用以下命令清除哈希值

$ hash -d pip3

或者

$ hash -r

相关内容