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