Как заставить django работать на debian 11? - ошибка python: KeyError: 'django'
Несколько месяцев назад я установил mailman3 на чистый установленный debian 10 vm, с успехом - сервер работал долгое время и рассылал сотни писем без каких-либо проблем. Руководство, которое я полностью реализовал , это то, которое анонсировано самим GNU Mailman.
После регулярного процесса обновления системы debian с 10 до 11 (никогда не добавлял внешних источников пакетов, так что это было очень просто) я попробовал снова запустить mailman 3. Все работает, кроме веб-фреймворка django - тот управляется qcluster.service.
Похоже, что проблема заключается в выполнении /opt/mailman/mm/bin/django-admin migrate
; вывод выглядит следующим образом (journalctl -u qcluster.service
содержит те же строки):
вывод pip freeze | grep django
(пусть это поможет):
django-allauth==0.47.0
django-appconf==1.0.5
django-compressor==3.1
django-extensions==3.1.5
django-gravatar2==1.4.4
django-haystack==3.1.1
django-mailman3==1.3.7
django-picklefield==3.0.1
django-q==1.3.9
djangorestframework==3.13.1
Я уже убедился, что нет никаких нерешенных зависимостей пакета pip, но, похоже, проблема не в этом... Я уже пытался пересоздать python env, пробовал разные версии python (Python 3.7.12, 3.8.12, 3.9.2 и 3.9.9), но и это не помогло, перерыл половину интернета (нашел this, но ничего не помогло :-(
).Mistune перенес несколько функций из scanner в util, см. этот коммит.
Так что вы должны изменить from mistune.scanner import escape_html, escape_url
на from mistune.util import escape_html, escape_url
в /opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/lib/renderer.py
, как подсказывает сообщение об ошибке.
PS: Используйте pip freeze | grep -i django
, потому что он отображается как Django
.
PS2: Похоже, что другие пользователи mailman3 так же, как и вы, недовольны зависимостью mistune, смотрите их багтрекер gitlab. Это также означает, что разработчики hyperkitty должны знать о новой стабильной версии mistune (у них была зависимость от релиз-кандидата 2.0, после которого произошла рефакторинг).