簡體   English   中英

在Python 3中的S3BotoStorage

[英]S3BotoStorage in python 3

我已經設置了我的Django項目,將靜態和用戶上傳的文件存儲到Amazon S3中。 為了實現這一點,我遵循了這里發現的例子https://ashokfernandez.wordpress.com/2014/03/11/deploying-a-django-app-to-amazon-aws-with-nginx-gunicorn- git /

prod.py

INSTALLED_APPS += ('storages',)
AWS_STORAGE_BUCKET_NAME = "project"
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = S3_URL

但是當我嘗試運行manage.py collectstatic -v 0 --noinput此錯誤:

 Traceback (most recent call last):
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/storages/backends/s3boto.py", line 7, in <module>
     from cStringIO import StringIO
 ImportError: No module named 'cStringIO'

 During handling of the above exception, another exception occurred:

 Traceback (most recent call last):
   File "/home/ubuntu/webapps/project/manage.py", line 14, in <module>
     execute_from_command_line(sys.argv)
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
     utility.execute()
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/core/management/__init__.py", line 377, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/core/management/__init__.py", line 238, in fetch_command
     klass = load_command_class(app_name, subcommand)
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/core/management/__init__.py", line 42, in load_command_class
     return module.Command()
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 58, in __init__
     self.storage.path('')
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/utils/functional.py", line 224, in inner
     self._setup()
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 391, in _setup
     self._wrapped = get_storage_class(settings.STATICFILES_STORAGE)()
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/core/files/storage.py", line 303, in get_storage_class
     return import_string(import_path or settings.DEFAULT_FILE_STORAGE)
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/utils/module_loading.py", line 26, in import_string
     module = import_module(module_path)
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/importlib/__init__.py", line 109, in import_module
     return _bootstrap._gcd_import(name[level:], package, level)
   File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
   File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
   File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
   File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
   File "<frozen importlib._bootstrap>", line 1129, in _exec
   File "<frozen importlib._bootstrap>", line 1471, in exec_module
   File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
   File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/storages/backends/s3boto.py", line 9, in <module>
     from StringIO import StringIO  # noqa
 ImportError: No module named 'StringIO'

似乎lib django-storages == 1.1.8還不支持Python3,這就是我收到錯誤的原因。

我的問題是:我該如何解決這個問題? 有沒有類似的lib來取代django-storages?

我正在使用django 1.7.1和Python3。

我剛用這個新的回購解決了我自己的問題:

https://github.com/jschneier/django-storages-redux/issues/6

該線程使用這個新的django-storage有一個完整的解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM