#python #django
#python #django
Вопрос:
Я пытаюсь развернуть свое веб-приложение Django на Heroku. Я сталкивался с этой же ошибкой каждый раз, когда пытался развернуть.
Ошибка импорта: ваша конфигурация белого шума несовместима с WhiteNoise v4.0 Это можно исправить, следуя инструкциям по обновлению по адресу:http://whitenoise.evans.io/en/stable/changelog.html#v4-0 ! Ошибка при запуске ‘$ python manage.py collectstatic —noinput’. Подробности см. в обратной трассировке выше. Возможно, вам потребуется обновить код приложения, чтобы устранить эту ошибку. Или вы можете отключить collectstatic для этого приложения: $ heroku config:установить DISABLE_COLLECTSTATIC=1https://devcenter.heroku.com/articles/django-assets ! Отклонено нажатие, не удалось скомпилировать приложение Python. ! Не удалось выполнить нажатие
Я перешел по ссылке, чтобы внести изменения, как указано в документации. Мне потребовалось удалить любое упоминание из the wsgi.py файл, и мне пришлось добавить его в промежуточное программное обеспечение в settings.py и измените статическое хранилище.
#settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
.
.
.
.
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Я следую этому руководству ( https://simpleisbetterthancomplex.com/tutorial/2016/08/09/how-to-deploy-django-applications-on-heroku.html )
Я не уверен, что вызывает эту ошибку. Применяются обновления Whitenoise, и статические файлы также находятся на месте.
Проект работает как шарм на локальном сервере, но я просто не могу его развернуть. Заранее спасибо!
Комментарии:
1. Вы зафиксировали изменения, внесенные в
wsgi.py
, в git?2. Если ваш проект работает локально, но не на Heroku, это говорит о том, что у вас есть изменения, которые не были зафиксированы. «git heroku push master» — это то, что вы запускаете после фиксации, оно не будет автоматически фиксировать изменения для вас.
3. Я попытался зафиксировать, прежде чем нажимать на нее, выдав ту же ошибку, за которой последовало еще несколько ошибок (ошибка при сборе статических данных)
Ответ №1:
whitenoise.django.GzipManifestStaticFilesStorage
псевдоним теперь удален. Вместо этого вы должны использовать правильный путь импорта:
whitenoise.storage.CompressedManifestStaticFilesStorage
Комментарии:
1. Спасибо @skillmuggler
2. Я нахожу ваш ответ запутанным, потому что он уже использовал
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Ответ №2:
в wsgi.py используйте
from whitenoise import WhiteNoise
вместо
from whitenoise.django import DjangoWhiteNoise
Комментарии:
1. Обновите этот импорт в
settings.py
и используйтеapplication = WhiteNoise(application)
вместоapplication = DjangoWhiteNoise(application)
вsettigns.py
.
Ответ №3:
Я в основном следовал инструкциям на этой странице, чтобы исправить это.
Опция интеграции WSGI для Django (которая включала редактирование wsgi.py ) была удалена. Вместо этого вы должны добавить WhiteNoise в свой список промежуточного программного обеспечения в settings.py и удалите любую ссылку на WhiteNoise из wsgi.py .
Ответ №4:
По-видимому, с версии 4.0 WhiteNoise некоторые параметры настройки были изменены. Интеграция WSGI с django была удалена, что включает редактирование wsgi.py файл; поэтому вам следует удалить любую ссылку на wsgi.py создайте файл и добавьте WhiteNoise в список промежуточного программного обеспечения в вашем settings.py вместо этого файл. http://whitenoise.evans.io/en/stable/changelog.html#v4-0
Промежуточное программное обеспечение WhiteNoise должно быть размещено непосредственно под программным обеспечением Django SecurityMiddleware и выше всех других промежуточных программhttp://whitenoise.evans.io/en/stable/django.html #:~:text=Включить WhiteNoise, промежуточное ПРОГРАММНОЕ обеспечение.
А также «белый шум.псевдоним django.GzipManifestStaticFilesStorage» изменен на «whitenoise.storage».CompressedManifestStaticFilesStorage», которая снова находится в вашем settings.py файл, т.е. STATICFILES_STORAGE = ‘whitenoise.storage.CompressedManifestStaticFilesStorage’
Ответ №5:
Вы можете столкнуться с этой ошибкой, если для параметра DEBUG установлено значение TRUE.
Убедитесь, что вы получили эти настройки для производства: DEBUG = FALSE