【问题标题】:Using Boto to connect to S3 with Python使用 Boto 通过 Python 连接到 S3
【发布时间】:2016-05-19 03:56:36
【问题描述】:

我正在尝试使用 Boto 访问 AWS,但它无法正常工作。我已经安装了 Boto 和 /etc 中的 boto.cfg。这是我的代码:

import requests, json
import datetime
import hashlib
import boto

conn = boto.connect_s3()

这是错误:

Traceback (most recent call last):
  File "boto.py", line 4, in <module>
    import boto
  File "/home/mydir/public_html/boto.py", line 6, in <module>
    conn = boto.connect_s3()
AttributeError: 'module' object has no attribute 'connect_s3'

什么鬼?这并不复杂。

【问题讨论】:

  • 不确定我的错误是否相关,但如果 boto.s3.key.Key.base_user_settable_fields 中的 k.lower(),我在 merge_meta 中得到 boto/utils.py",第 171 行: AttributeError:“模块”对象没有属性“键”

标签: python amazon-web-services amazon-s3 boto


【解决方案1】:

看起来您正在处理的文件名为boto.py。我认为这里发生的事情是您的文件正在自行导入——Python 在查找您的PYTHONPATH 之前,会在包含执行导入的文件的目录中查找模块。尝试将名称更改为其他名称。

【讨论】:

  • 请注意,如果已创建boto.pyc,您还需要删除它。
  • 谢谢。有同样的问题
【解决方案2】:

使用连接类。

例如

from boto.s3.connection import S3Connection
from boto.sns.connection import SNSConnection
from boto.ses.connection import SESConnection

def connect_s3(self):
  return S3Connection(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY)

def connect_sns(self):
  return SNSConnection(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY)

def connect_ses(self):
  return SESConnection(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY)

【讨论】:

    【解决方案3】:

    @valdogg21

    我正在按照您的指示将其放入我的代码中:

    from boto.s3.connection import S3Connection
    conn = S3Connection('<aws access key>', '<aws secret key>')
    

    但尽管我的意图是好的,它还是导致了一个小错误。我刚刚做了

    sudo pip install boto --upgrade 确保我安装了最新版本。

    这是错误信息。只是想知道我是独狼还是其他人遇到这个问题...

    from boto.s3.connection import S3Connection ImportError: cannot import 名称 S3Connection

    【讨论】:

      【解决方案4】:

      您可能需要做一些类似于我在某些代码中使用EC2Connection 类的方法,如下所示:

      from boto.ec2.connection import EC2Connection
      conn = EC2Connection(...)
      

      另外,来自他们的文档 (http://boto.s3.amazonaws.com/s3_tut.html):

      >>> from boto.s3.connection import S3Connection
      >>> conn = S3Connection('<aws access key>', '<aws secret key>')
      

      编辑:我知道文档页面具有您尝试使用的快捷方式功能,但在尝试使用 EC2 执行相同类型的快捷方式时,我看到了类似的问题。

      【讨论】:

        【解决方案5】:

        我已经尝试了您的所有解决方案,但似乎没有一个有效。我一直在查看 StackOverFlow,因为我看不到其他人没有这个相当小的问题。有点奇怪的事实是,在服务器中它就像一个魅力。问题出在我的 Mac 上

        【讨论】:

          【解决方案6】:

          我遇到了这个问题,并且在使用 boto3 和 moto 模拟 s3 存储桶时遇到了同样的错误。

          boto3.connect_s3()
          

          我将我的库切换回 boto,它运行良好。看起来 boto3 已经将 connect_s3() 迁移到了 resources():

          boto.connect_s3() //works
          boto3.resources('s3')  //works
          

          我也可以为 AWS Lambda 解决类似问题:

          boto.connect_awslambda() //works
          boto3.client('lambda')  //works
          

          【讨论】:

            猜你喜欢
            • 2013-07-06
            • 1970-01-01
            • 1970-01-01
            • 2014-04-22
            • 1970-01-01
            • 2011-01-05
            • 1970-01-01
            • 1970-01-01
            • 2023-03-18
            相关资源
            最近更新 更多