2012-11-14 53 views
9

嘿所以試圖將用戶上傳的圖像連接到我的S3存儲桶,以便圖像將存儲在那裏。使用Django存儲器(做了一些研究,似乎每個人都建議,但開放的思想)Django存儲 - 無法加載亞馬遜的S3綁定錯誤

這裏就是我所做的:

安裝的Django儲存

pip install django-storages 

把它添加到我的INSTALLED_APPS

#settings.py 
INSTALLED_APPS = (
... 
'storages', 
) 

,並將此代碼,以及到的settings.py

#settings.py 
DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage' 
AWS_ACCESS_KEY_ID = '#################' 
AWS_SECRET_ACCESS_KEY = '#######################' 
AWS_STORAGE_BUCKET_NAME = 'mybucketname' 

然後我打開外殼並運行此檢查

from django.core.files.storage import default_storage 
print default_storage.connection 
... 
ImproperlyConfigured: Could not load amazon's S3 bindings. 
See http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134 

的鏈接導致404錯誤。一直跟着documentation,並嘗試所有3種方式來設置DEFAULT_FILE_STORAGE,並沒有一個工作。見下文。

DEFAULT_FILE_STORAGE = 'libs.storages.backends.S3Storage.S3Storage' 
ImproperlyConfigured: Error importing storage module libs.storages.backends.S3Storage 

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
ImproperlyConfigured: Could not load Boto's S3 bindings. 

如何正確設置它?

回答

21

你有沒有安裝python-boto?
pip install boto

+0

忘了安裝博託。現在安裝了Boto,我打開shell來檢查(與上面相同的進程),它返回而不是S3Boto。我能在這裏做什麼? – agassi0430

+1

我已經安裝了boto,並沒有爲我使用'storages.backends.s3.S3Storage' –

+0

@NicolasBouliane嘗試使用storages.backends.s3boto.S3BotoStorage –

0

在回答你上面的評論,它聽起來就像你使用了錯誤的設置,檢查這一個:

DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage' 
0

對於設置首先你想即:

DEFAULT_FILE_STORAGE = 'libs.storages.backends.S3Storage.S3Storage' 

這意味着如果您的python路徑中的'libs.storages'目錄中存在存儲代碼,那麼我t應該像上面那樣訪問。

,如果你有使用setup.py或PIP或easy_install的安裝的Django,儲存然後按照2個選項在那裏:

A. 女將S3Python基於庫

DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage' 
  • python和S3之間的簡單接口

B. 的Python寶途基於庫

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
  • 基於蟒博託,並且支持多先進的功能例如連接池等

  • 但你必須安裝python博託使用它,e.g pip install boto

3

最近有這個問題上TravisCIDjango的回購

運行python manage.py compress失敗,出現錯誤:

Could not load Boto's S3 bindings.

,正好是與博託試圖導入google-compute-engine模塊一個問題,未安裝。

一個解決該問題的方法是通過安裝GCE發動機

pip install google-compute-engine

編輯:

調查後,看來這個特殊的問題是由於特拉維斯正對GCE,而GCE有一個默認的/etc/boto.cfg文件,它會提示boto尋找GCE引擎。

另一種方式來解決對特拉維斯這個問題,而無需安裝更多的依賴關係是通過設置變量

BOTO_CONFIG=/tmp

travis.yml

看到這個設置與BOTO_CONFIG默認的配置,使其指向無處問題 https://github.com/boto/boto/issues/3741

+0

在Google Cloud Engine VM上安裝edX Platform時,這個問題解決了我的問題。我不知道它爲什麼這樣做:D –

+0

另一種方式os定義默認路徑boto配置指向一個不存在的文件。我不記得爲什麼,但在博託github上有一個線程,我需要在這裏查找lknk – MrE

+0

請參閱編輯與解釋和鏈接到公關 – MrE