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, это решило мою проблему.

  1. доведите пакеты tzdata и pytz до последней версии:
   pip uninstall pytz
   pip install pytz==2022.2.1
   pip uninstall tzdata
   pip install tzdata==2022.2
  1. тестирование django в 4.0.5 и 4.1 будет работать: my enviroments

Старое и неправильное имя Kiev было переименовано в правильное Kyiv. В этом случае не все пакеты были обновлены и есть некоторые конфликты. Это будет исправлено со временем, а пока вы можете просто использовать симлинк для поддержки обеих версий, просто выполнив команду в вашем Linux

ln -s /usr/share/zoneinfo/Europe/Kiev /usr/share/zoneinfo/Europe/Kyiv
Вернуться на верх