2012-12-13 22 views
7

Boto kullanarak AWS'ye erişmeye çalışıyorum ve çalışmıyor. Boto ve boto.cfg/etc dizinlerini kurdum.Python ile S3'e bağlanmak için Boto kullanma

import requests, json 
import datetime 
import hashlib 
import boto 

conn = boto.connect_s3() 

İşte hata var: İşte benim kod

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' 

ne? Bu karmaşık değil.

+0

emin değil eğer, ama ben alıyorum utils/boto.py ", satır 171, merge_meta içinde k.lower(), boto.s3.key.Key.base_user_settable_fields içinde: AttributeError: 'module' nesnesi 'key' özelliğine sahip değildir – radtek

cevap

0

Sen Şöyle kodumu, bazılarında EC2Connection sınıfını kullanmak zorunda şekline benzer bir şey yapmak gerekebilir: onların dokümanlardan,

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

Ayrıca (http://boto.s3.amazonaws.com/s3_tut.html):

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

DÜZENLEME: Doküman sayfasında kullanmaya çalıştığınız kısayol işlevinin olduğunu biliyorum, ancak EC2 ile aynı türde bir kısayolu yapmaya çalışırken benzer bir sorun gördüm.

17

Üzerinde çalıştığınız dosyaya boto.py adı verilir. Sanırım, burada olan şey, dosyanızın kendini içe aktarmasıdır. Python, PYTHONPATH'unuza bakmadan önce içe aktarma işlemini yapan dosyayı içeren dizindeki modülleri arar. İsmi başka bir şeye değiştirmeyi deneyin.

+0

Tamamen işe yaradı, Teşekkür ederim! –

+1

@RandallPinkston Bunu kabul edildi olarak işaretleyin – igaurav

+3

Oluşturulduğunda oluşturulan "boto.pyc" yi de silmeniz gerektiğini unutmayın. – jveldridge

0

Bağlantı sınıflarını kullanın.

örn.

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

@ ben senin dediklerini yapıyorum ve benim koduna bu koyun:

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

Ama benim iyi niyetine rağmen, bu küçük bir hata ile sonuçlanır. En son sürümün yüklü olduğundan emin olmak için

sudo pip install boto --upgrade'u yaptım.

Bu hata iletisidir. Ben yalnız bir kurt değilim veya başkalarının bu sorunla karşılaşırsanız lütfen ...

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

0

Ben tüm çözümleri denedim ama bunların hiçbiri çalışmıyor gibi görünüyor Sadece merak. StackOverFlow'u devam ettiriyorum, çünkü bu küçük sorunu olmayan başka kimseyi göremiyorum. Tuhaf gerçek şu ki sunucuda bir çekicilik gibi çalışır. Sorun benim Mac'te

0

Bu sorunu yaşadım ve b3 ve mock s3 kovanını kullanırken motora da aynı hatayı veriyordum.

boto3.connect_s3() 

Kitaplığımı boto'ya geri döndüm ve iyi çalıştı. Ben de AWS Lambda'ya için benzer sorunu çözmek olabilir

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

: Bu kaynaklara boto3 göç etmiştir gibi connect_s3()() görünüyor benim hata ilgilidir

boto.connect_awslambda() //works 
boto3.client('lambda') //works 
İlgili konular