【问题标题】:boto3 import fails python3.4boto3导入失败python3.4
【发布时间】:2016-10-18 04:43:58
【问题描述】:

我正在尝试编写 python 脚本来获取实例的标签键 AutoScalingGroupName 实例的值。我已经使用pip3 安装了boto3

从 python3.4 shell 我能够成功import boto3

#python3.4
Python 3.4.3 (default, Jul  8 2016, 11:37:17)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3
>>> exit()

但脚本因此错误而失败。

#python test.py
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    import boto3
ImportError: No module named boto3
#

这是test.py的内容

# cat test.py
#!/bin/python3.4
import requests
import boto3
import botocore.session
import urllib.request

instid = urllib.request.urlopen('http://169.254.169.254/latest/meta-data/instance-id').read().decode()
autossession = botocore.session.Session(profile='auto1')
ec2 = boto3.resource('ec2', region_name='us-west-2')
autosval = ec2.describe_instances(InstanceIds={instid}, Filters={"tag:AutoScalingGroupName"})
print(autosval)
#

【问题讨论】:

  • 这里有一篇文章展示了如何使用 virtualenv 在 Python 3.4 中安装 boto3:How do I create an isolated Python 3.4 environment with Boto 3 on Amazon EC2 using virtualenv? 这可能会帮助您调试您的情况。
  • @JohnRotenstein,boto3 已经安装。看第一段代码,python3.4 shell中Import boto3没有错误。
  • @JohnRotenstein,我刚刚注意到我以python2.7 而不是python3.4 运行脚本。我没有看到ImportError: No module named boto3
  • 遵循@JohnRotenstein 的建议,使用 virtualenv。这是 Python 开发的第一大最佳实践。在通用环境中安装 pypi 需要sudo 访问权限,这意味着没有sudo python 就无法加载boto3。 Virtualenv 将创建独立的本地化用户环境,让您无需sudo即可安装python包
  • 谢谢@mootmoot,肯定会开始使用Virtualenv。

标签: python-3.x amazon-ec2 boto3


【解决方案1】:

您的问题似乎是由从命令行与脚本运行不同版本的 Python 引起的。

当系统上安装了多个版本的 Python(及其库)时,这很常见。

我在通过sudo 命令(例如pip)安装python 库和实用程序时也遇到了问题,但是用户之间的路径不同,因此会运行不同的版本。

幸运的是,Python 社区创建了Virtualenv,它允许安装多个版本的 Python,每个版本都在自己的环境中。这也允许在不需要sudo 访问权限的情况下安装库。

如果您仍然遇到版本不匹配的问题,请尝试 virtualenv!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多