无法加载 Boto 的 S3 绑定。 (安装博托)

Posted

技术标签:

【中文标题】无法加载 Boto 的 S3 绑定。 (安装博托)【英文标题】:Could not load Boto's S3 bindings. (Installed Boto) 【发布时间】:2013-04-15 09:55:18 【问题描述】:

我正在尝试使用 s3 来存储用户的上传文件,我使用 django 存储

pip install django-storages

将其添加到我的 INSTALLED_APPS

INSTALLED_APPS = (

...

'存储',

)

在 settings.py 中设置变量

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

AWS_ACCESS_KEY_ID = '#################'

AWS_SECRET_ACCESS_KEY = '#######################'

AWS_STORAGE_BUCKET_NAME = 'mybucketname'

我已经安装了boto

sudo pip install boto

dyld:DYLD_ 环境变量被忽略,因为主可执行文件 (/usr/bin/sudo) 是 setuid 或 setgid

要求已经满足(使用 --upgrade 升级):boto in /Library/Python/2.7/site-packages/boto-2.9.0_dev-py2.7.egg

正在清理...

当我保存项目时,django的调试页面跳出来,

无法加载 Boto 的 S3 绑定。

见https://github.com/boto/boto

有什么想法吗? (我用的是mac os x 10.8.3)

【问题讨论】:

Error "Could not load Boto's S3 bindings."的可能重复 【参考方案1】:

创建一个 bash 脚本:install_latest_boto.sh:

#install latest boto from source
cd /home/ubuntu/
sudo mkdir boto_temp
cd boto_temp
sudo git clone git://github.com/boto/boto.git
cd boto
sudo python setup.py install 

关于 Django 的设置 - django 默认存储为 s3:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_S3_FILE_OVERWRITE = False

在你的 models.py 上:

class MyBaseModel(models.Model):
    class Meta:
        abstract = True

    @staticmethod
    def get_upload_path(instance, filename):
        if hasattr(instance, 'get_upload_folder'):
            return os.path.join(instance.get_upload_folder(), filename)
        else:
            raise Exception('Upload Folder is missing')

class User(MyBaseModel):
    name = models.CharField(max_length=100) 
    email = models.EmailField(max_length=255, unique=True)
    image = models.ImageField(upload_to=MyBaseModel.get_upload_path, default=None, blank=True, max_length=200)

    def get_upload_folder(self):
        upload_folder = 'users/images/orig'
        return upload_folder

【讨论】:

以上是关于无法加载 Boto 的 S3 绑定。 (安装博托)的主要内容,如果未能解决你的问题,请参考以下文章

Boto 无法使用 S3 IAM 角色进行身份验证

在 Heroku 上使用 Boto 时,无法连接到名称中带有句点的 S3 存储桶

升级到 Django 1.7。出现错误:无法序列化:<storages.backends.s3boto.S3BotoStorage 对象

使用带有 Compressor 的 Boto 的 Django AWS S3 无法压缩 UncompressableFileError

Amazon S3 boto:如何重命名存储桶中的文件?

Boto3 S3 更新现有对象的元数据