1

위로 가기 대답 herehere을 수행하면 모든 것이 collectstatic 일 때 예상대로 작동하지만 내 heroku 인스턴스에서 collectstatic는 작동하지 않습니다.Heroku, django-storages 및 s3 : Collectstatic은 로컬에서는 작동하지만 Heroku에서는 작동하지 않습니다

settings.pys3utils.py 파일은 모두 manage.py에 인접한 myproject 폴더에 있습니다.

s3utils.py :

from storages.backends.s3boto import S3BotoStorage 

MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media') 
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static') 

settings.py

DEFAULT_FILE_STORAGE = 'myproject.s3utils.MediaRootS3BotoStorage' 
STATICFILES_STORAGE = 'myproject.s3utils.StaticRootS3BotoStorage' 
AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXXXXXX' 
AWS_SECRET_ACCESS_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXX' 
AWS_STORAGE_BUCKET_NAME = 'myproject' 
AWS_PRELOAD_METADATA = True # necessary to fix manage.py collectstatic command to only upload changed files instead of all files 

STATIC_URL = 'https://s3.amazonaws.com/myproject/static/' 
ADMIN_MEDIA_PREFIX = 'https://s3.amazonaws.com/myproject/static/admin/' 
MEDIA_URL = 'https://s3.amazonaws.com/myproject/media/' 

나는 그것을 성공적으로 복사합니다 로컬 S3에 내 모든 파일을 collectstatic 실행합니다. 여기에 다시이고 당신이 볼 수있는 일했다 :

(venv)[email protected]:~/git/myproject$ heroku run ./manage.py collectstatic --noinput 
Running `./manage.py collectstatic --noinput` attached to terminal... up, run.5714 
Traceback (most recent call last): 
    File "./manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line 
    utility.execute() 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command 
    klass = load_command_class(app_name, subcommand) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 78, in load_command_class 
    return module.Command() 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 58, in __init__ 
    self.storage.path('') 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/functional.py", line 202, in inner 
    self._setup() 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/storage.py", line 307, in _setup 
    self._wrapped = get_storage_class(settings.STATICFILES_STORAGE)() 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/files/storage.py", line 290, in get_storage_class 
    raise ImproperlyConfigured('Error importing storage module %s: "%s"' % (module, e)) 
django.core.exceptions.ImproperlyConfigured: Error importing storage module myproject.s3utils: "No module named s3utils" 

어떤 도움이 크게 될 것이다 : 그러나 내가 배포하고 내 사이트를 방문하거나 나는 다음과 같은 얻을에게 Heroku를 통해 collectstatic 실행하려고 할 때마다

(venv)[email protected]:~/git/myproject$ ./manage.py collectstatic --noinput 

0 static files copied, 5357 unmodified. 

고맙습니다.

답변

3

신경 쓰지 마라, 그것은 어리석은 실수이었다. 그러나 누군가 다른 사람이 이것을 가로 질러 비틀 거린다면, 나는 여기에서 떠날 것이다.

만들기 후에 git 저장소에 myproject/s3utils.py를 추가해야합니다!

저는 똑똑한 사람이 아닙니다.