安装后未将awscli添加到路径


77

我根据亚马逊的官方指示安装了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上运行此命令。有什么事吗

谢谢!


你能进口吗?您是否检查了PYTHONPATH中的库?
肖恩·张

为什么使用sudo?真的有必要吗?
CGTheLegend

Answers:


111

改善OP的答案

OP回答了他们自己的问题,但是可执行文件的确切位置与其相同的可能性更大。因此,让我们细分一下为什么他的解决方案有效,以便您可以将其应用于自己。

从问题

位于的文件很多/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

请注意,它们在libvs.处有所分歧bin。并考虑到OP指出:“没有名为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

可是等等

OP怎么知道看他们的/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'>

我有2个Python,它们都不使用与OP相同的路径甚至路径模式。

应用我们所学

$ 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

如您所见,我有2个bin文件夹和2个aws可执行文件。我可能想使用Python3.6版本。但是,如果我正在为使用Python2.7版本的远程系统进行本地试验和错误测试,那么我将要使用它。这正是为什么我安装了2个版本的原因。


15
我在Stack Overflow上找到的最好的答案之一。谢谢!
Paul Janicki

2
@VishalDesai您的感受就是为什么我在stackoverflow.com/a/41994024/117471中添加步骤4之类的原因,是的,当您想要快速解决方案时,很难遍历这样的列表。但是,这些仅适用于与作者的系统完全匹配的系统。在尝试了所有可以找到的答案之后,我写了这样的答案,但没有任何效果。这些答案在我的DevOps团队手册中链接,因为我们有很多非标准系统要支持。我写的答案对所有人都有用。希望对您更多有用。抱歉,它不适合您。去睡一会。
布鲁诺·布罗诺斯基

2
抱歉昨天的评论。第二条评论实际上对我有用。我睡了一会,恢复了活力,此后不久就解决了问题。
维沙尔·德赛

2
@BrunoBronosky感谢您的回答,当有人花宝贵的时间为共同利益详细解释事情时,这对人类来说是好话。
davecoffin

1
@danmux是正确的,并且新的MacOS安全模型希望您执行--user安装而不是sudo安装。这就是为什么python -c 'import awscli; print(awscli)'如此重要的原因。它将检测到该路径。所有的SO答案都应解释“如何获得答案”,而不是“这对我有用”。不重要。我意识到有些人不知道如何进行这项研究。在这种情况下,他们的答案可能会帮助其他人加入并扩大其范围,使其更具通用性。这是一个很好的例子。
布鲁诺·布罗诺斯基

73

这在Mac上对我有用:

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

1
这是一个简单的解决方案,对于那些不是只需要快速工作的书呆子来说,是最好的选择。
athul

2
谁能解释这是如何工作的?它的工作没有任何问题
tt_Gantz,

1
由于某些原因,这也可以与pip3一起安装AWS Python 3版本。
renatoaraujoc

传说Dheeraj!:)
Yavar

gra,gracias,就上下文而言,它对我不起作用,因为我在下安装了python。anaconda3
VelLes


24

在ubuntu上并使用不带sudo的pip3进行安装,要添加到我的路径的正确位置是~/.local/bin

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


9

可以pip show awscli用来查找安装位置。

$ pip show awscli
Name: awscli
Version: 1.16.94
Summary: Universal Command Line Environment for AWS.
Home-page: http://aws.amazon.com/cli/
Author: Amazon Web Services
Author-email: UNKNOWN
License: Apache License 2.0
Location: /root/.local/lib/python2.7/site-packages
Requires: s3transfer, colorama, rsa, docutils, botocore, PyYAML
Required-by:

1
谢谢,这有助于快速缩小范围:)。
John Humphreys-w00te

3

我从OSX 10.7升级到OSX 10.9,此后,aws的安装不再起作用。

我观察到这样的错误:

$ pip
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module>
working_set.require(__requires__)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require
needed = self.resolve(parse_requirements(requirements))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve
    raise DistributionNotFound(req)  # XXX put more info here
pkg_resources.DistributionNotFound: pip==1.5.5

操作系统升级已更改权限的解决方案。

赠品线索:

须藤点<--工作

点<--失败

所以我这样做:

sudo chmod -R a+r /Library/Python/

然后,我可以再次使用aws命令。

不知道这是否对其他人有帮助,但我想我会把它扔进去。


2

在virtualenv中安装时:'pip install awscli'(不使用sudo)在OS X上运行良好;但不是在CentOS 6.6版上,例如,“哪个aws”什么都没找到。解决方案:

chmod u+x /PATH-TO-YOUR-VIRTUALENV/bin/aws

1

paths如果您具有管理员权限,则直接编辑文件。

如果您没有管理员权限,绝对可以使用最高级的答案,但是如果这样做,我强烈建议您直接编辑paths位于的文件/etc/paths

使用您喜欢的编辑器,然后将所需路径粘贴到新行上:

样本paths文件:

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Users/username/Library/Python/3.6/bin #new path added here at bottom of file

粘贴在顶部或底部,或按照您希望搜索二进制文件的位置的任何顺序粘贴(如果存在名称重复的二进制文件)。

使用该paths文件可以省去记住连接语法的麻烦,如果您编写错误的导出语句,也可以避免潜在的麻烦。


1

我通常要做的是将可执行文件复制到/ usr / local / bin

cp $(find / -name aws) /usr/local/bin

好答案!谢谢!
人性化的

在我的情况下,aws在/usr/bin我那里复制了。
Dnyaneshwar Harer

0

Windows可能在这里是少数,但是将以下内容添加到我的PATH中对我来说很有用。作为参考,我通过pip安装了CLI:

C:\Python27\Scripts

0

我在Windows 10上遇到了类似的问题。我必须在PATH变量下添加以下内容

对于Python

C:\Users\kumar\AppData\Local\Programs\Python\Python37\  

对于PIP

C:\Users\kumar\AppData\Local\Programs\Python\Python37\Scripts\

为了使awscli工作:

C:\Users\kumar\AppData\Roaming\Python\Python37\Scripts

0

检查您的python版本,但我猜您正在使用python 3.3

导出PATH = $ HOME / Library / Python / 3.3 / bin:$ PATH




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.