安装后awscli未添加到路径
我按照亚马逊的官方说明安装了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 个回答
解决办法是把
/Library/Frameworks/Python.framework/Versions/3.3/bin
加到我的路径里。
在Ubuntu系统上,如果你是用pip3安装软件而没有使用sudo,那么你需要把路径添加到你的环境变量中,正确的路径是 ~/.local/bin
:
export PATH=$HOME/.local/bin:$PATH
来自 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
在我的Mac上,这个方法有效:
sudo -H pip install awscli --upgrade --ignore-installed six
改进原作者的回答
原作者自己回答了自己的问题,但可执行文件的具体位置很可能是不同的,而不是相同的。所以,我们来分析一下他的方法为什么有效,这样你也可以用到自己的情况上。
问题来源
有一些文件位于
/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
注意到它们在 lib
和 bin
的地方分开了。而且原作者提到过,“没有名为 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 的远程系统进行本地试验和错误,我就会想用那个。这正是我安装两个版本的原因。