clanvas
clanvas copied to clipboard
Program does not work immediately after install
I tried installing clanvas on Ubuntu WSL (Python 3.10) and Windows (Python 3.11), and neither works after install.
Here is the output when I try to run:
Ubuntu WSL
$ clanvas [school url redacted]
Traceback (most recent call last):
File "/home/mason/.local/bin/clanvas", line 5, in <module>
from clanvas.clanvas import main
File "/home/mason/.local/lib/python3.10/site-packages/clanvas/clanvas.py", line 11, in <module>
import cmd2
File "/home/mason/.local/lib/python3.10/site-packages/cmd2/__init__.py", line 13, in <module>
from .cmd2 import Cmd, Statement, EmptyStatement, categorize
File "/home/mason/.local/lib/python3.10/site-packages/cmd2/cmd2.py", line 48, in <module>
from . import utils
File "/home/mason/.local/lib/python3.10/site-packages/cmd2/utils.py", line 73, in <module>
default_values: collections.Iterable = ()):
AttributeError: module 'collections' has no attribute 'Iterable'
Windows
$ clanvas [school url redacted]
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "D:\Users\Mason Francis\OneDrive\Coding\clanvas-test\venv\Scripts\clanvas.exe\__main__.py", line 4, in <module>
File "D:\Users\Mason Francis\OneDrive\Coding\clanvas-test\venv\Lib\site-packages\clanvas\clanvas.py", line 2, in <module>
import readline
File "D:\Users\Mason Francis\OneDrive\Coding\clanvas-test\venv\Lib\site-packages\readline.py", line 34, in <module>
rl = Readline()
^^^^^^^^^^
File "D:\Users\Mason Francis\OneDrive\Coding\clanvas-test\venv\Lib\site-packages\pyreadline\rlmain.py", line 422, in __init__
BaseReadline.__init__(self)
File "D:\Users\Mason Francis\OneDrive\Coding\clanvas-test\venv\Lib\site-packages\pyreadline\rlmain.py", line 62, in __init__
mode.init_editing_mode(None)
File "D:\Users\Mason Francis\OneDrive\Coding\clanvas-test\venv\Lib\site-packages\pyreadline\modes\emacs.py", line 633, in init_editing_mode
self._bind_key('space', self.self_insert)
File "D:\Users\Mason Francis\OneDrive\Coding\clanvas-test\venv\Lib\site-packages\pyreadline\modes\basemode.py", line 162, in _bind_key
if not callable(func):
^^^^^^^^^^^^^^
File "D:\Users\Mason Francis\OneDrive\Coding\clanvas-test\venv\Lib\site-packages\pyreadline\py3k_compat.py", line 8, in callable
return isinstance(x, collections.Callable)
^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'collections' has no attribute 'Callable'
It seems that in util.py one needs to change
from collections import Iterable
to
from collections.abc import Iterable
and also in the upstream cmd2 package one needs to change utils.py, replacing 'collections.Iterable' with 'collections.abc.Iterable' and replacing 'collections.Mapping' with 'collections.abc.Mapping'
https://stackoverflow.com/questions/53978542/how-to-use-collections-abc-from-both-python-3-8-and-python-2-7/53978543#53978543