Django 4 Ошибка: 'Не найден часовой пояс с ключом ...'
После пересборки моего Django 4 Docker контейнера веб-сервис перестал работать с ошибкой : zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key Asia/Hanoi'
Моя установка такова: Python 3.10 Django 4.0.5
Ошибка:
В файле настроек Django:
TIME_ZONE = 'UTC'
USE_TZ = True
PS: Как было предложено в другом сообщении, я добавил tzdata в файл требований, но ничего не изменилось.
Понижение версии pytz с 2022.2 до 2022.1, похоже, решило эту проблему для меня.
В качестве быстрого (и грязного) способа исправить это добавьте эти строки в ваш Dockerfile:
RUN cp /usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/Asia/Aden /usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/Asia/Hanoi && \
cp /usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/Europe/Moscow /usr/local/lib/python3.10/site-packages/tzdata/zoneinfo/Europe/Kyiv
У меня такая же ошибка. Это помогает мне исправить ее:
# upgrade pytz up to the latest pytz-2022.2.1
pip install pytz --upgrade
# upgarde tzdata up to tzdata-2022.2
pip install tzdata --upgrade
После обновления pytz и tzdata мой проект Django снова работает отлично!
Спасибо за https://stackoverflow.com/a/73365642/1099058, это решило мою проблему.
- доведите пакеты tzdata и pytz до последней версии:
pip uninstall pytz
pip install pytz==2022.2.1
pip uninstall tzdata
pip install tzdata==2022.2
Старое и неправильное имя Kiev
было переименовано в правильное Kyiv
. В этом случае не все пакеты были обновлены и есть некоторые конфликты. Это будет исправлено со временем, а пока вы можете просто использовать симлинк для поддержки обеих версий, просто выполнив команду в вашем Linux
ln -s /usr/share/zoneinfo/Europe/Kiev /usr/share/zoneinfo/Europe/Kyiv