安装后awscli未添加到路径

87 投票
17 回答
82481 浏览
提问于 2025-04-18 04:32

我按照亚马逊的官方说明安装了aws cli。

sudo pip install awscli

但是,我在我的路径中找不到aws这个命令。看起来安装是成功的。在这个位置/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/awscli有很多文件,但没有叫aws的可执行文件。我的Python版本是3.3.4,pip版本是1.5.4,我是在OS X 10.9上运行这个命令的。可能出什么问题了呢?

谢谢!

17 个回答

11

解决办法是把

/Library/Frameworks/Python.framework/Versions/3.3/bin

加到我的路径里。

28

在Ubuntu系统上,如果你是用pip3安装软件而没有使用sudo,那么你需要把路径添加到你的环境变量中,正确的路径是 ~/.local/bin

export PATH=$HOME/.local/bin:$PATH
44

来自 http://docs.aws.amazon.com/cli/latest/userguide/cli-install-macos.html#awscli-install-osx-path

对于现代的macOS/OSX系统,你需要找到你的 ~/Library/Python/$version/bin 文件夹,并把它添加到你的 $PATH 里。这样做可以帮助你找到安装了 aws 的位置。

$ ls -d ~/Library/Python/*/bin/aws
/Users/bbronosky/Library/Python/3.6/bin/aws

所以根据这个,我在我的 .bashrc 文件里加了这一行。

export PATH=$HOME/Library/Python/3.6/bin:$PATH
84

在我的Mac上,这个方法有效:

sudo -H pip install awscli --upgrade --ignore-installed six
122

改进原作者的回答

原作者自己回答了自己的问题,但可执行文件的具体位置很可能是不同的,而不是相同的。所以,我们来分析一下他的方法为什么有效,这样你也可以用到自己的情况上。

问题来源

有一些文件位于 /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/awscli,但是没有名为 aws 的可执行文件。

解决方案

解决方案是将 /Library/Frameworks/Python.framework/Versions/3.3/bin 添加到我的 PATH 中。

让我们学习一些东西

比较一下这些路径,找出它们的共同点:

/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/awscli
/Library/Frameworks/Python.framework/Versions/3.3/bin

注意到它们在 libbin 的地方分开了。而且原作者提到过,“没有名为 aws 的可执行文件。”这给我们带来了第一个学习点:

  • 可执行文件通常不在 lib 文件夹里。
  • 寻找共享相同来源的 bin 文件夹。

在这种情况下,我会建议通过以下方式寻找 bin 文件夹:

find /Library/Frameworks/Python.framework -type d -name bin

不过,如果你要这样做,干脆直接搜索你的可执行文件:

find /Library/Frameworks/Python.framework -type f -perm -100 -name aws
# the `-` in `perm -100` means not an exact match of 100
# but any octal that includes 100

等等

原作者是怎么知道要在 /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/ 查找的呢?

最简单的答案也是我们下一个学习点:

  • 问问你的 Python,看看东西安装在哪里。

下面是我怎么做的:

$ python -c 'import awscli; print(awscli)'
<module 'awscli' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/awscli/__init__.pyc'>

$ python3 -c 'import awscli; print(awscli)'
<module 'awscli' from '/System/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/awscli/__init__.py'>

我有两个 Python,它们的路径甚至和原作者的都不一样。

应用我们学到的知识

$ find /System/Library/Frameworks/Python.framework -type d -name bin
/System/Library/Frameworks/Python.framework/Versions/2.7/bin
/System/Library/Frameworks/Python.framework/Versions/3.6/bin

$ find /System/Library/Frameworks/Python.framework -type f -perm -100 -name aws
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/aws
/System/Library/Frameworks/Python.framework/Versions/3.6/bin/aws

如你所见,我有两个 bin 文件夹和两个 aws 可执行文件。我可能想使用 Python3.6 的版本。然而,如果我在为一个使用 Python2.7 的远程系统进行本地试验和错误,我就会想用那个。这正是我安装两个版本的原因。

撰写回答