2013-04-22 41 views
4

我試圖使用S3來存儲用戶的上傳文件,我使用Django儲存無法加載Boto的S3綁定。 (安裝的Boto)

PIP安裝Django,儲存

把它添加到我的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'

我已經安裝了博託

須藤PIP安裝博託

使dyld:DYLD_環境變量被忽略,因爲主要的可執行文件(在/ usr /斌/須藤)是setuid或setgid

要求已滿足(使用 - 升級升級):boto在/Library/Python/2.7/site-packages/boto-2.9.0_dev-py2.7.egg

清理...

當我保存該項目,則Django的調試頁面跳出來,

無法加載寶途的S3綁定。

https://github.com/boto/boto

任何想法? (我使用Mac OS X 10.8.3)

+0

的可能重複的[錯誤 「無法加載寶途的S3綁定」](http://stackoverflow.com/questions/10574834/error-could-not-load-botos-s3-bindings) – Marat 2014-01-24 13:17:39

回答

0

創建一個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 

模型上。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