Python 3.x boto3导入失败python3.4

Python 3.x boto3导入失败python3.4,python-3.x,amazon-ec2,boto3,Python 3.x,Amazon Ec2,Boto3,我正在尝试使用python脚本,以获取实例的标记键AutoScalingGroupName值。我已经使用pip3安装了bot3 从python3.4shell中,我能够成功导入bot3 #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

我正在尝试使用python脚本,以获取实例的标记键
AutoScalingGroupName
值。我已经使用
pip3
安装了
bot3

从python3.4shell中,我能够
成功导入bot3

#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
#

您的问题似乎是由从命令行和脚本运行不同版本的Python造成的

当系统上安装了多个版本的Python(及其库)时,这种情况非常常见

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

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


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

这里有一篇文章展示了如何使用virtualenv在Python 3.4中安装boto3:这可能会帮助您调试您的情况。@JohnRotenstein,boto3已经安装。请参阅代码的第一部分,
Import boto3
在python3.4 shell中没有错误。@JohnRotenstein,我刚刚注意到我正在以
python2.7
而不是
python3.4
的形式运行脚本。我没有看到
importorror:没有名为boto3的模块
Follow@JohnRotenstein advision,使用virtualenv。这是python开发的头号最佳实践。在通用环境中安装pypi需要
sudo
access,这意味着您无法在没有
sudopython
的情况下加载bot3。Virtualenv将创建独立的本地化用户环境,并允许您安装python软件包,而无需
sudo
Thank@mootmoot,您一定会开始使用Virtualenv。
# 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)
#