2017-08-17 40 views
1

django-storages docs推薦使用boto3來管理帶有S3的靜態文件存儲。預計此配置工作,但它的err'ing出boto3 site-packages S3Response語法err on collectstatic

requirements.txt

boto3==1.4.6 
botocore==1.6.3 
django-storages==1.1.4 

prod.py [設置]

from .common import * 
from storages.backends.s3boto import S3BotoStorage 

... 

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 
AWS_ACCESS_KEY_ID = ENV_STR('AWS_ACCESS_KEY_ID') 
AWS_SECRET_ACCESS_KEY = ENV_STR('AWS_SECRET_ACCESS_KEY') 
AWS_STORAGE_BUCKET_NAME = ENV_STR('AWS_STORAGE_BUCKET_NAME') 
S3_URL = 'http://s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME 
STATIC_URL = S3_URL 
MEDIA_URL = 'http://s3.amazonaws.com/%s/media/' % 
AWS_STORAGE_BUCKET_NAME 
ADMIN_MEDIA_PREFIX = STATIC_URL + '/admin/' 
AWS_S3_ENCRYPTION = True 
AWS_IS_GZIPPED = True 

但乳寧在manage.py collectstatic --noinput測試失敗從存儲器/後端/ s3boto.py中的存儲包語法錯誤:

Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
execute_from_command_line(sys.argv) 
    File "/home/ubuntu/virtualenvs/venv-3.5.3/lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line 
utility.execute() 
    File "/home/ubuntu/virtualenvs/venv-3.5.3/lib/python3.5/site-packages/django/core/management/__init__.py", line 302, in execute 
settings.INSTALLED_APPS 
    File "/home/ubuntu/virtualenvs/venv-3.5.3/lib/python3.5/site-packages/django/conf/__init__.py", line 55, in __getattr__ 
self._setup(name) 
    File "/home/ubuntu/virtualenvs/venv-3.5.3/lib/python3.5/site-packages/django/conf/__init__.py", line 43, in _setup 
self._wrapped = Settings(settings_module) 
    File "/home/ubuntu/virtualenvs/venv-3.5.3/lib/python3.5/site-packages/django/conf/__init__.py", line 99, in __init__ 
mod = importlib.import_module(self.SETTINGS_MODULE) 
    File "/opt/circleci/python/3.5.3/lib/python3.5/importlib/__init__.py", line 126, in import_module 
return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
    File "<frozen importlib._bootstrap_external>", line 673, in exec_module 
    File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
    File "/home/ubuntu/brightest-list/project/settings/prod.py", line 7, in <module> 
from storages.backends.s3boto import S3BotoStorage 
File "/home/ubuntu/virtualenvs/venv-3.5.3/lib/python3.5/site-packages/storages/backends/s3boto.py", line 139 
except S3ResponseError, e: 
        ^
SyntaxError: invalid syntax 

運行python 3.m y最初的假設是它是一個依賴版本的衝突,但我試過卸載並重新安裝boto3和存儲以不起作用。感謝任何指導或建議,否則我可能會卸載boto3並恢復到博託。

回答

2

django-storages==1.1.4不支持python3。這個版本是2012所以我不會推薦使用這樣的舊版本。 This問題提供了一些關於它的更多信息。嘗試使用1.5或更新的新版本。您也可以使用review代碼,您將看到它與python3.x兼容。