16

ユーザーがアップロードした画像をS3バケットに接続して、画像がそこに保存されるようにします。djangoストレージの使用(いくつかの調査を行いましたが、誰もが提案したように見えましたが、アイデアはオープンです)

これが私がしたことです:

インストールされた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エラーにつながります。ドキュメントに従って、DEFAULT_FILE_STORAGEを設定する3つの方法すべてを試しましたが、いずれも機能しません。下記参照。

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.

どうすればこれを正しく設定できますか?

4

6 に答える 6

29

python-botoをインストールしていますか?
pip install boto また pip install boto3

于 2012-11-14T15:32:07.057 に答える
5

古いbotoの代わりにboto3を使用することを検討してください。

Requirements.txt:

pip install django-storages
pip install boto3

settings.py:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
于 2018-07-30T15:00:59.083 に答える
4

最近、Djangoリポジトリを使用してTravisCIでこの問題が発生しました

実行python manage.py compressは次のエラーで失敗しました:

BotoのS3バインディングを読み込めませんでした。

たまたま、google-compute-engineインストールされていないモジュールをインポートしようとするbotoの問題でした。

この問題を解決する1つの方法は、GCEエンジンをインストールすることです。

pip install google-compute-engine

編集:

調査の結果、この特定の問題は、TravisがGCE上にあり、GCEにデフォルト/etc/boto.cfgファイルがあり、botoにGCEエンジンを探すように促すことが原因であると思われます。

依存関係を追加せずにTravisでこの問題を修正する別の方法はBOTO_CONFIG、変数を設定して、デフォルトの構成をどこも指さないように設定することです。

BOTO_CONFIG=/tmp

あなたの中でtravis.yml

この問題を参照して くださいhttps://github.com/boto/boto/issues/3741

于 2017-06-23T19:43:07.607 に答える
1

上記のコメントへの回答として、間違った設定を使用しているようです。次の設定を確認してください。

DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'
于 2013-07-31T15:35:15.520 に答える
0

あなたが試みている最初の設定のためにすなわち:

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

これは、ストレージのコードがPythonパスの「libs.storages」ディレクトリにある場合は、上記のようにアクセスする必要があることを意味します。

ただし、 setup.py、pip、またはeasy_installを使用してdjango-storagesをインストールした場合は、次の2つのオプションがあります。

A. Amazone S3Pythonベースのライブラリ

DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'
  • PythonとS3の間のシンプルなインターフェース

B. Python Botoベースのライブラリ

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
  • python botoに基づいており、接続プールなどの非常に高度な機能をサポートしています。

  • ただし、使用するにはpythonbotoをインストールする必要があります。pip install boto

于 2014-05-13T10:01:57.717 に答える
0

エラーメッセージのリンクhttp://developer.amazonwebservices.com/connect/entry.jspa?externalID=134は、現在機能しているようです(2014年6月)。それに従ってダウンロードし、.zipファイルを解凍しS3.pyて、Pythonパス(つまり、site-packages)に配置すると、すべて機能します。

于 2015-06-03T18:41:53.140 に答える