• Bug#1108932: wims-lti: fails to install (ModuleNotFoundError: No module

    From Lucas Nussbaum@21:1/5 to All on Tue Jul 8 09:30:02 2025
    Package: wims-lti
    Version: 0.4.4.1-16
    Severity: serious

    wims-lti fails to install in a clean, minimal trixie VM:
    Setting up wims-lti (0.4.4.1-16) ...
    /var/lib/wims-lti/lti_app/apps.py:22: Warning: Settings 'DEBUG' has not been redefined in wimsLTI/config.py, see https://docs.djangoproject.com/fr/2.2/ref/s
    ettings/#debug
    warnings.warn(
    /var/lib/wims-lti/lti_app/apps.py:29: Warning: Settings 'SECRET_KEY' has not been redefined in wimsLTI/config.py, see https://docs.djangoproject.com/fr/2.2/
    ref/settings/#secret-key
    warnings.warn(
    /var/lib/wims-lti/lti_app/apps.py:36: Warning: Settings 'SERVER_EMAIL' has not been redefined in wimsLTI/config.py, see https://docs.djangoproject.com/fr/2.
    2/ref/settings/#server-email
    warnings.warn(
    /var/lib/wims-lti/lti_app/apps.py:43: Warning: Settings 'EMAIL_HOST' has not been redefined in wimsLTI/config.py, see https://docs.djangoproject.com/fr/2.2/
    ref/settings/#email-host
    warnings.warn(
    /var/lib/wims-lti/lti_app/apps.py:50: Warning: Settings 'ADMINS' has not been redefined in wimsLTI/config.py, see https://docs.djangoproject.com/fr/2.2/ref/
    settings/#admins
    warnings.warn(
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:add_job:507] INFO -- Adding job tentatively -- it will be prop
    erly scheduled when the scheduler starts
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:add_job:507] INFO -- Adding job tentatively -- it will be prop
    erly scheduled when the scheduler starts
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:add_job:507] INFO -- Adding job tentatively -- it will be prop
    erly scheduled when the scheduler starts
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:_real_add_job:1090] INFO -- Added job "send_back_all_sheets_gr
    ades" to job store "default"
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:_real_add_job:1090] INFO -- Added job "send_back_all_exams_gra
    des" to job store "default"
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:_real_add_job:1090] INFO -- Added job "check_classes_exists" t
    o job store "default"
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:start:214] INFO -- Scheduler started

    125 static files copied to '/var/lib/wims-lti/static'. /var/lib/wims-lti/lti_app/apps.py:22: Warning: Settings 'DEBUG' has not been redefined in wimsLTI/config.py, see https://docs.djangoproject.com/fr/2.2/ref/s
    ettings/#debug
    warnings.warn(
    /var/lib/wims-lti/lti_app/apps.py:29: Warning: Settings 'SECRET_KEY' has not been redefined in wimsLTI/config.py, see https://docs.djangoproject.com/fr/2.2/
    ref/settings/#secret-key
    warnings.warn(
    /var/lib/wims-lti/lti_app/apps.py:36: Warning: Settings 'SERVER_EMAIL' has not been redefined in wimsLTI/config.py, see https://docs.djangoproject.com/fr/2.
    2/ref/settings/#server-email
    warnings.warn(
    /var/lib/wims-lti/lti_app/apps.py:43: Warning: Settings 'EMAIL_HOST' has not been redefined in wimsLTI/config.py, see https://docs.djangoproject.com/fr/2.2/
    ref/settings/#email-host
    warnings.warn(
    /var/lib/wims-lti/lti_app/apps.py:50: Warning: Settings 'ADMINS' has not been redefined in wimsLTI/config.py, see https://docs.djangoproject.com/fr/2.2/ref/
    settings/#admins
    warnings.warn(
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:add_job:507] INFO -- Adding job tentatively -- it will be prop
    erly scheduled when the scheduler starts
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:add_job:507] INFO -- Adding job tentatively -- it will be prop
    erly scheduled when the scheduler starts
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:add_job:507] INFO -- Adding job tentatively -- it will be prop
    erly scheduled when the scheduler starts
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:_real_add_job:1090] INFO -- Added job "send_back_all_sheets_gr
    ades" to job store "default"
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:_real_add_job:1090] INFO -- Added job "send_back_all_exams_gra
    des" to job store "default"
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:_real_add_job:1090] INFO -- Added job "check_classes_exists" t
    o job store "default"
    [2025/07/08 07:22:11] [/usr/lib/python3/dist-packages/apscheduler/schedulers/base.py][base.py:start:214] INFO -- Scheduler started
    Traceback (most recent call last):
    File "/var/lib/wims-lti/oauth2/_version.py", line 13, in <module>
    from pyutil.version_class import Version as pyutil_Version ModuleNotFoundError: No module named 'pyutil'

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "/var/lib/wims-lti/./manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
    ~~~~~~~~~~~~~~~^^
    File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 412, in run_from_argv
    self.execute(*args, **cmd_options)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 453, in execute
    self.check()
    ~~~~~~~~~~^^
    File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 485, in check
    all_issues = checks.run_checks(
    app_configs=app_configs,
    ...<2 lines>...
    databases=databases,
    )
    File "/usr/lib/python3/dist-packages/django/core/checks/registry.py", line 88, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
    File "/usr/lib/python3/dist-packages/django/core/checks/urls.py", line 14, in check_url_config
    return check_resolver(resolver)
    File "/usr/lib/python3/dist-packages/django/core/checks/urls.py", line 24, in check_resolver
    return check_method()
    File "/usr/lib/python3/dist-packages/django/urls/resolvers.py", line 494, in check
    for pattern in self.url_patterns:
    ^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/django/utils/functional.py", line 57, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
    ~~~~~~~~~^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/django/urls/resolvers.py", line 715, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
    ^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/django/utils/functional.py", line 57, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
    ~~~~~~~~~^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/django/urls/resolvers.py", line 708, in urlconf_module
    return import_module(self.urlconf_name)
    File "/usr/lib/python3.13/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
    File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
    File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
    File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
    File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
    File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
    File "/var/lib/wims-lti/wimsLTI/urls.py", line 16, in <module>
    path('', include('lti_app.urls', namespace='lti')),
    ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/django/urls/conf.py", line 38, in include
    urlconf_module = import_module(urlconf_module)
    File "/usr/lib/python3.13/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
    File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
    File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
    File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
    File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
    File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
    File "/var/lib/wims-lti/lti_app/urls.py", line 11, in <module>
    from lti_app import views
    File "/var/lib/wims-lti/lti_app/views.py", line 24, in <module>
    from lti_app.utils import (MODE, check_custom_parameters, check_parameters, get_exam,
    get_or_create_class, get_or_create_user, get_sheet, is_teacher,
    is_valid_request, parse_parameters)
    File "/var/lib/wims-lti/lti_app/utils.py", line 17, in <module>
    import oauth2
    File "/var/lib/wims-lti/oauth2/__init__.py", line 47, in <module>
    from ._version import __version__
    File "/var/lib/wims-lti/oauth2/_version.py", line 16, in <module>
    from distutils.version import LooseVersion as distutils_Version ModuleNotFoundError: No module named 'distutils'
    dpkg: error processing package wims-lti (--configure):
    installed wims-lti package post-installation script subprocess returned error exit status 1
    Processing triggers for libc-bin (2.41-9) ...
    Errors were encountered while processing:
    wims-lti
    Error: Sub-process /usr/bin/dpkg returned an error code (1)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)