git aws.push:未找到boto模块

18
我正在尝试跟随教程:在AWS Elastic Beanstalk上部署Django
当我执行第6步的子步骤5时:
git aws.push
我收到一个 ImportError 的错误信息:
(tryhasinenv)Lee-Jamess-MacBook-Pro:tryhasin h0925473$ git aws.push
Traceback (most recent call last):
  File ".git/AWSDevTools/aws.elasticbeanstalk.push", line 21, in <module>
    from aws.dev_tools import * 
  File "/Users/h0925473/tryhasin_root/tryhasin/.git/AWSDevTools/aws/dev_tools.py", line 5, in <module>
    import boto
ImportError: No module named boto

我不知道该怎么办,有人可以告诉我出了什么问题吗?


我曾经遇到过同样的问题,并通过以下方法解决:http://stackoverflow.com/questions/23354411/awss-elastic-beanstalk-not-using-my-virtualenv-no-module-named-boto/27308707#27308707 - Gabriel
6个回答

42
在OSX上,我发现运行命令pip install boto不能解决问题。问题在于Python未指向pip安装位置。export PYTHONPATH=/usr/local/lib/python2.7/site-packages对我有帮助。

我已经发布了PYTHONPATH的导出,但是在尝试进行aws.push时仍然遇到可怕的boto错误。当我继续尝试pip install boto时,我会得到以下错误: 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> ... raise DistributionNotFound(req) # XXX put more info here pkg_resources.DistributionNotFound: pip==1.1 - Dave Munger
1
好的,我通过从git克隆boto并以这种方式安装来解决了这个问题。 - Dave Munger
添加PYTHONPATH对我也起作用了 - 我只需要确保我在使用教程的正确路径(例如,在Mac上,按照所有教程说明后,路径为/private/tmp/djangodev/lib/python2.7/site-packages)。 - AndraD
嗨,每次我使用aws.push时都必须重新输入导出路径。有没有什么方法可以避免这种情况呢?谢谢。 - Phil Hudson
我的 Mac OS X 安装没有附带 pip。我在 /usr/local/aws/bin/ 中找到了 pip。所以我从那里运行了 pip install boto。但是 git aws.push 仍然无法工作。我运行了 which python,发现它没有使用 /usr/local/aws/bin 中的 python。所以我在我的 ~/.bash_profile 中将 /usr/local/aws/bin 添加到了 PATH 中。现在 AWS-ElasticBeanstalk-CLI-2.6.3 下的 git aws.push 已经可以工作了。 - shs
@PhilHudson - 注意,您可以通过将变量添加到您的~/.bash_profile来全局设置它(至少对于您的用户帐户),每次打开终端时,它都会读取该文件。 - geerlingguy

17

我通过单独运行以下命令解决了这个问题:

$ sudo easy_install pip

使用默认的Python包安装程序来安装PIP

$ sudo pip install boto 

我需要管理员权限来添加boto(我不知道这是否正确)。

然后运行$ eb start


这将为我安装引导程序并解决问题。 - Bagusflyer

4

在运行了pip install boto之后,您是否执行了pip freeze > requirements.txt

每次在本地安装新的Python包后,您都需要更新requirements.txt,以确保您的AWS实例拥有所有所需的软件包。

编辑:

如果不是您添加了boto,则需要先安装然后自己使用pip freeze冻结。

尝试运行以下命令:

pip install boto
pip freeze > requirements.txt
git add .
git commit -m "Added boto"
git aws.push

这是因为没有安装boto。在我安装了boto之后,执行git add、git commit和git aws.push命令,再执行eb status --verbose命令,状态显示为绿色并且准备就绪,但我仍然可以访问EB默认的欢迎页面。实际上应该跳转到Django的欢迎页面。我已经按照教程设置了所有配置并编辑了setting.py文件。 - user2988464
我没有收到Boto错误,但无法进入Django的欢迎页面,它一直跳转到EB的欢迎页面。 - user2988464
你能在本地计算机上看到Django欢迎页面吗?也就是说,在运行python manage.py runserver之后?你是否执行了django-admin.py startproject mysite等操作? - Alex
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/51451/discussion-between-user2988464-and-alex - user2988464
我一直收到相同的“no module named boto”错误。我运行了所有这些命令,并且可以在我的要求文件中看到boto被保存了下来,而且成功提交了,但我仍然会收到这个错误。我还能做些什么? - Michelle Glauser
显示剩余3条评论

2

我曾经遇到过与Ansible类似的问题,通过以下方法解决:

sudo apt install python-boto

这是唯一一个在我运行Ubuntu Xenial通过Vagrant和VirtualBox时有效的答案。 - TechDawg270

0
如果您正在使用Ubuntu,请尝试以下操作:-
sudo apt install python-boto3

应该可以工作。


0

我正在使用Python3。因此,我不得不使用以下命令来让PYTHONPATH指向site-packages目录

export PYTHONPATH=/usr/local/lib/python3.8/site-packages

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接