2012-12-13 12 views
7

Ich versuche, mit Boto auf AWS zuzugreifen, und es funktioniert nicht. Ich habe Boto und die Boto.cfg in/etc installiert. Hier ist mein Code:Verwenden von Boto zum Verbinden mit S3 mit Python

import requests, json 
import datetime 
import hashlib 
import boto 

conn = boto.connect_s3() 

Hier ist der Fehler:

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' 

Was zum Teufel? Das ist nicht kompliziert.

+0

nicht sicher, ob mein Fehler ist verwandt, aber ich bin immer Boto/utils.py ", Zeile 171, in merge_meta wenn k.lower() in boto.s3.key.Key.base_user_settable_fields: AttributError: 'Modul' Objekt hat kein Attribut 'Schlüssel' – radtek

Antwort

0

Sie müssen möglicherweise etwas ähnliches tun, wie ich hatte die EC2Connection Klasse in einige meinen Code zu verwenden, die wie folgt aussieht:

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

Auch von ihrem docs (http://boto.s3.amazonaws.com/s3_tut.html):

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

EDIT: Ich weiß, dass Doc-Seite hat die Verknüpfung Funktion, die Sie versuchen zu verwenden, aber ich sah ein ähnliches Problem, wenn Sie versuchen, die gleiche Art von Verknüpfung mit EC2 zu tun.

17

Es sieht so aus, als ob die Datei, an der Sie gerade arbeiten, boto.py heißt. Ich denke, was passiert hier ist, dass Ihre Datei selbst importiert - Python sucht nach Modulen in dem Verzeichnis, das die Datei enthält, die den Import durchführt, bevor es auf Ihrem PYTHONPATH aussieht. Versuchen Sie, den Namen in etwas anderes zu ändern.

+0

Das hat komplett funktioniert. Danke! –

+1

@RandallPinkston markieren Sie dies als akzeptiert – igaurav

+3

Beachten Sie, dass Sie auch die generierte 'boto.pyc' löschen müssen, wenn sie erstellt wurde. – jveldridge

0

Verwenden Sie die Verbindungsklassen.

z.B.

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) 
2

@ valdogg21

Ich folge Ihren Anweisungen und setzen diese in meinen Code:

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

Aber trotz meiner guten Absichten, es ergibt sich ein kleiner Fehler. Ich habe gerade

sudo pip install boto --upgrade um sicherzustellen, dass ich die neueste Version installiert habe.

Dies ist die Fehlermeldung. Nur frage mich, ob ich ein Einzelgänger bin, oder wenn andere dieses Problem auftritt ...

from boto.s3.connection import S3Connection ImportError: cannot import name S3Connection

0

Ich habe alle Ihre Lösungen ausprobiert, aber keiner von ihnen scheint zu funktionieren. Ich gehe weiter über StackOverFlow, da ich niemanden sehen kann, der dieses kleine Problem nicht hat. Eine seltsame Tatsache ist, dass es im Server wie ein Zauber wirkt. Das Problem ist auf meinem Mac

0

Ich hatte dieses Problem und war mit dem gleichen Fehler konfrontiert, wenn Sie mit Boto3 und Moto s3 Eimer zu spielen.

boto3.connect_s3() 

Ich schaltete meine Bibliothek zurück zu Boto und es funktionierte gut. Es sieht aus wie boto3 migriert connect_s3(), um Ressourcen():

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

ich zu ähnlichem Problem für AWS Lambda lösen könnte:

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