为什么两个用户会获得同一二进制文件的不同版本?

为什么两个用户会获得同一二进制文件的不同版本?

我刚刚使用 python-pip 更新了一个包。两个不同的用户获得不同版本的二进制文件:

andrew$ which aws
/usr/bin/aws

andrew$ /usr/bin/aws  --version
aws-cli/1.16.194 Python/3.5.2 Linux/4.4.0-1087-aws botocore/1.12.184

andrew$ sudo su tomcat

tomcat$ which aws
/usr/bin/aws

tomcat$ /usr/bin/aws --version
aws-cli/1.11.13 Python/3.5.2 Linux/4.4.0-1087-aws botocore/1.4.70

这种情况发生在以 tomcat 用户身份运行的应用程序中,也发生在命令行中。我今天已经从 1.11 升级到 1.16(使用pip3 install --upgrade pip awscli),但是 tomcat 用户仍然使用旧版本。我已经重新启动了 apache-tomcat 服务器,注销并重新登录(尽管我还没有重新启动服务器)。 linux 是否有可能为一个用户缓存一个程序而不为另一个用户缓存?

根据评论,我认为两个用户有不同的环境,这意味着当 python 导入 awscli.clidriver 时,它是不同的版本。但如何在全球范围内找出/修复它呢? debian 拉伸/sid,x86_64

答案1

这是一个 pip 环境问题。我不太明白它,因为我确信解决它的步骤在我尝试的前几次中不起作用......但是作为两个用户然后sudo apt-get remove awscli最终按照我的希望安装了它。pip3 uninstall awsclisudo pip3 install awscli

在阅读了数十个 pip 问题和答案后,我只知道我不明白各个版本的 pip 如何与 --user 和 sudo 权限交互。我不会将自己的答案标记为正确,但很乐意考虑任何其他答案。

相关内容