1

几个月前,我在全新安装的 debian 10 vm 上安装了 mailman3,并且成功——服务器运行了很长时间,并且分发了数百封邮件,没有任何问题。我完全实现的教程是 GNU Mailman 自己发布的

在从 10 到 11 的常规 debian 系统升级过程之后(从未添加外部包源,所以这真的很容易)我尝试再次启动 mailman 3。一切正常,除了 django web 框架——由qcluster.service控制的框架。

问题似乎在执行中/opt/mailman/mm/bin/django-admin migrate;输出如下(journalctl -u qcluster.service包含相同的行):

Traceback (most recent call last):
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/template/utils.py", line 66, in __getitem__
    return self._engines[alias]
KeyError: 'django'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/template/backends/django.py", line 121, in get_package_libraries
    module = import_module(entry[1])
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/templatetags/decorate.py", line 4, in <module>
    from hyperkitty.lib.renderer import markdown_renderer, text_renderer
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/lib/renderer.py", line 7, in <module>
    from mistune.scanner import escape_html, escape_url
ImportError: cannot import name 'escape_html' from 'mistune.scanner' (/opt/mailman/mm/venv/lib/python3.9/site-packages/mistune/scanner.py)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/mailman/mm/venv/bin/django-admin", line 8, in <module>
    sys.exit(execute_from_command_line())
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/base.py", line 89, in wrapped
    res = handle_func(*args, **kwargs)
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/commands/migrate.py", line 75, in handle
    self.check(databases=[database])
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/base.py", line 419, in check
    all_issues = checks.run_checks(
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/checks/registry.py", line 76, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/contrib/admin/checks.py", line 78, in check_dependencies
    for engine in engines.all():
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/template/utils.py", line 90, in all
    return [self[alias] for alias in self]
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/template/utils.py", line 90, in <listcomp>
    return [self[alias] for alias in self]
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/template/utils.py", line 81, in __getitem__
    engine = engine_cls(params)
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/template/backends/django.py", line 25, in __init__
    options['libraries'] = self.get_templatetag_libraries(libraries)
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/template/backends/django.py", line 43, in get_templatetag_libraries
    libraries = get_installed_libraries()
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/template/backends/django.py", line 108, in get_installed_libraries
    for name in get_package_libraries(pkg):
  File "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/template/backends/django.py", line 123, in get_package_libraries
    raise InvalidTemplateLibrary(
django.template.library.InvalidTemplateLibrary: Invalid template library specified. ImportError raised when trying to load 'hyperkitty.templatetags.decorate': cannot import name 'escape_html' from 'mistune.scanner' (/opt/mailman/mm/venv/lib/python3.9/site-packages/mistune/scanner.py)

的输出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),但这一切都不起作用,谷歌搜索了一半的网络(找到了这个但没有任何帮助:-(

4

1 回答 1

0

Mistune 已将几个功能从扫描仪移至实用程序,请参阅此提交

因此,您必须按照错误消息的提示更改from mistune.scanner import escape_html, escape_urlfrom mistune.util import escape_html, escape_urlin 。/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/lib/renderer.py

PS:使用pip freeze | grep -i django,因为它显示为Django

PS2:似乎其他 mailman3 用户和您一样对 misune 依赖项不满意,请参阅他们的gitlab bugtracker。这也意味着 hyperkitty 开发人员应该了解新的稳定 misune 版本(他们依赖于 2.0 候选版本,之后发生了相关重构)。

于 2022-01-08T15:47:18.480 回答