question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Kolibri 0.15.2 Python 3.10 error on Ubuntu 22.04 "ImportError: cannot import name 'Iterator' from 'collections' (/usr/lib/python3.10/collections/__init__.py)"

See original GitHub issue

This promising work from earlier in April seemed tailored to getting Kolibri 0.15.2 working with Python 3.10? [CLARIF: No, Kolibri seems to be deferring support for Python 3.10 until a later date]

Somehow however the just-released Kolibri 0.15.2 (https://learningequality.org/r/kolibri-deb-latest) appears to install on Ubuntu Desktop 22.04 on x86_64 (as part of Internet-in-a-Box) — but then serious Python 3.10 problems appear:

TASK [kolibri : Provision Kolibri, while setting: facility name, admin acnt / password, preset type, and language] *****************************************************
fatal: [127.0.0.1]: FAILED! => {"changed": true, "cmd": "export KOLIBRI_HOME=\"/library/kolibri\" && \"/usr/bin/kolibri\" manage provisiondevice --facility \"Kolibri-in-a-Box\" --superusername \"Admin\" --superuserpassword \"changeme\" --preset \"formal\" --language_id \"en\" #--preset \"formal\" --language_id \"en\" --verbosity 0 --noinput\n", "delta": "0:00:01.342052", "end": "2022-04-29 21:47:01.194557", "msg": "non-zero return code", "rc": 1, "start": "2022-04-29 21:46:59.852505", "stderr": "INFO: No C extensions are available for this platform\nTraceback (most recent call last):\n  File \"/usr/bin/kolibri\", line 11, in <module>\n    load_entry_point('kolibri==0.15.2', 'console_scripts', 'kolibri')()\n  File \"/usr/lib/python3/dist-packages/pkg_resources/__init__.py\", line 479, in load_entry_point\n    return get_distribution(dist).load_entry_point(group, name)\n  File \"/usr/lib/python3/dist-packages/pkg_resources/__init__.py\", line 2861, in load_entry_point\n    return ep.load()\n  File \"/usr/lib/python3/dist-packages/pkg_resources/__init__.py\", line 2465, in load\n    return self.resolve()\n  File \"/usr/lib/python3/dist-packages/pkg_resources/__init__.py\", line 2471, in resolve\n    module = __import__(self.module_name, fromlist=['__name__'], level=0)\n  File \"/usr/lib/python3/dist-packages/kolibri/utils/cli.py\", line 12, in <module>\n    from django.core.management import execute_from_command_line\n  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/core/management/__init__.py\", line 13, in <module>\n    from django.core.management.base import (\n  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/core/management/base.py\", line 17, in <module>\n    from django.db.migrations.exceptions import MigrationSchemaMissing\n  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/migrations/__init__.py\", line 2, in <module>\n    from .operations import *  # NOQA\n  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/migrations/operations/__init__.py\", line 1, in <module>\n    from .fields import AddField, AlterField, RemoveField, RenameField\n  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/migrations/operations/fields.py\", line 4, in <module>\n    from django.db.models.fields import NOT_PROVIDED\n  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/__init__.py\", line 5, in <module>\n    from django.db.models.deletion import (\n  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/deletion.py\", line 5, in <module>\n    from django.db.models import signals, sql\n  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/sql/__init__.py\", line 2, in <module>\n    from django.db.models.sql.query import *  # NOQA\n  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/sql/query.py\", line 11, in <module>\n    from collections import Counter, Iterator, Mapping, OrderedDict\nImportError: cannot import name 'Iterator' from 'collections' (/usr/lib/python3.10/collections/__init__.py)", "stderr_lines": ["INFO: No C extensions are available for this platform", "Traceback (most recent call last):", "  File \"/usr/bin/kolibri\", line 11, in <module>", "    load_entry_point('kolibri==0.15.2', 'console_scripts', 'kolibri')()", "  File \"/usr/lib/python3/dist-packages/pkg_resources/__init__.py\", line 479, in load_entry_point", "    return get_distribution(dist).load_entry_point(group, name)", "  File \"/usr/lib/python3/dist-packages/pkg_resources/__init__.py\", line 2861, in load_entry_point", "    return ep.load()", "  File \"/usr/lib/python3/dist-packages/pkg_resources/__init__.py\", line 2465, in load", "    return self.resolve()", "  File \"/usr/lib/python3/dist-packages/pkg_resources/__init__.py\", line 2471, in resolve", "    module = __import__(self.module_name, fromlist=['__name__'], level=0)", "  File \"/usr/lib/python3/dist-packages/kolibri/utils/cli.py\", line 12, in <module>", "    from django.core.management import execute_from_command_line", "  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/core/management/__init__.py\", line 13, in <module>", "    from django.core.management.base import (", "  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/core/management/base.py\", line 17, in <module>", "    from django.db.migrations.exceptions import MigrationSchemaMissing", "  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/migrations/__init__.py\", line 2, in <module>", "    from .operations import *  # NOQA", "  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/migrations/operations/__init__.py\", line 1, in <module>", "    from .fields import AddField, AlterField, RemoveField, RenameField", "  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/migrations/operations/fields.py\", line 4, in <module>", "    from django.db.models.fields import NOT_PROVIDED", "  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/__init__.py\", line 5, in <module>", "    from django.db.models.deletion import (", "  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/deletion.py\", line 5, in <module>", "    from django.db.models import signals, sql", "  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/sql/__init__.py\", line 2, in <module>", "    from django.db.models.sql.query import *  # NOQA", "  File \"/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/sql/query.py\", line 11, in <module>", "    from collections import Counter, Iterator, Mapping, OrderedDict", "ImportError: cannot import name 'Iterator' from 'collections' (/usr/lib/python3.10/collections/__init__.py)"], "stdout": "", "stdout_lines": []}

Likewise systemctl start kolibri fails, leading to this systemctl status kolibri output/trace:

Apr 29 21:55:00 box kolibri[3985]: INFO: No C extensions are available for this platform
Apr 29 21:55:01 box kolibri[3985]: Traceback (most recent call last):
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/bin/kolibri", line 11, in <module>
Apr 29 21:55:01 box kolibri[3985]:     load_entry_point('kolibri==0.15.2', 'console_scripts', 'kolibri')()
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 479, in load_entry_point
Apr 29 21:55:01 box kolibri[3985]:     return get_distribution(dist).load_entry_point(group, name)
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2861, in load_entry_point
Apr 29 21:55:01 box kolibri[3985]:     return ep.load()
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2465, in load
Apr 29 21:55:01 box kolibri[3985]:     return self.resolve()
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2471, in resolve
Apr 29 21:55:01 box kolibri[3985]:     module = __import__(self.module_name, fromlist=['__name__'], level=0)
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/kolibri/utils/cli.py", line 12, in <module>
Apr 29 21:55:01 box kolibri[3985]:     from django.core.management import execute_from_command_line
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/kolibri/dist/django/core/management/__init__.py", line 13, in <module>
Apr 29 21:55:01 box kolibri[3985]:     from django.core.management.base import (
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/kolibri/dist/django/core/management/base.py", line 17, in <module>
Apr 29 21:55:01 box kolibri[3985]:     from django.db.migrations.exceptions import MigrationSchemaMissing
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/kolibri/dist/django/db/migrations/__init__.py", line 2, in <module>
Apr 29 21:55:01 box kolibri[3985]:     from .operations import *  # NOQA
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/kolibri/dist/django/db/migrations/operations/__init__.py", line 1, in <module>
Apr 29 21:55:01 box kolibri[3985]:     from .fields import AddField, AlterField, RemoveField, RenameField
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/kolibri/dist/django/db/migrations/operations/fields.py", line 4, in <module>
Apr 29 21:55:01 box kolibri[3985]:     from django.db.models.fields import NOT_PROVIDED
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/__init__.py", line 5, in <module>
Apr 29 21:55:01 box kolibri[3985]:     from django.db.models.deletion import (
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/deletion.py", line 5, in <module>
Apr 29 21:55:01 box kolibri[3985]:     from django.db.models import signals, sql
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/sql/__init__.py", line 2, in <module>
Apr 29 21:55:01 box kolibri[3985]:     from django.db.models.sql.query import *  # NOQA
Apr 29 21:55:01 box kolibri[3985]:   File "/usr/lib/python3/dist-packages/kolibri/dist/django/db/models/sql/query.py", line 11, in <module>
Apr 29 21:55:01 box kolibri[3985]:     from collections import Counter, Iterator, Mapping, OrderedDict
Apr 29 21:55:01 box kolibri[3985]: ImportError: cannot import name 'Iterator' from 'collections' (/usr/lib/python3.10/collections/__init__.py)
Apr 29 21:55:01 box systemd[1]: kolibri.service: Control process exited, code=exited, status=1/FAILURE
Apr 29 21:55:01 box systemd[1]: kolibri.service: Failed with result 'exit-code'.
Apr 29 21:55:01 box systemd[1]: Failed to start Kolibri.

Any suggestions?

Thanks if possible!

Earlier/Stale references to this same topic:

Issue Analytics

  • State:closed
  • Created a year ago
  • Comments:9 (4 by maintainers)

github_iconTop GitHub Comments

1reaction
radinamaticcommented, Jun 7, 2022

(And hopefully 0.15.3 will be posted to https://learningequality.org/download/ shortly, to mainline this for others!)

Done & done! 🙂

0reactions
holtacommented, Jun 7, 2022

Confirmed: Kolibri 0.15.3 now works on Ubuntu 22.04 (and Python 3.10) with https://internet-in-a-box.org

(And hopefully 0.15.3 will be posted to https://learningequality.org/download/ shortly, to mainline this for others!)

Read more comments on GitHub >

github_iconTop Results From Across the Web

cannot import name 'Iterator' from 'collections' (Py 3.10) - Kolibri
Observed behavior kolibri command crashes immediately Errors and ... ImportError: cannot import name 'Iterator' from 'collections' (Py 3.10).
Read more >
cannot import name 'Iterable' from 'collections' in Python
1. When searching for this error, it seems that Python 3.10 has compatibility issues which cause this error to appear; I saw it...
Read more >
Installation with pip fails - cannot import name 'Mapping' from ...
Operating system: Ubuntu 22.04.1 wxPython version & source: 4.20 via ... from collections import Mapping ImportError: cannot import name ...
Read more >
ImportError: cannot import name Iterable from 'collections'
The Python "ImportError: cannot import name 'Iterable' from 'collections'" occurs for multiple reasons: Trying to import the Iterable class from the collections ......
Read more >
ImportError cannot import name Iterabler from collections ...
ImportError -cannot import name Iterabler from collections python 3-10. The Iterable abstract class was removed from collections in Python 3.10.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found