clanvas icon indicating copy to clipboard operation
clanvas copied to clipboard

Program does not work immediately after install

Open masoncfrancis opened this issue 2 years ago • 1 comments

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'

masoncfrancis avatar Aug 16 '23 05:08 masoncfrancis

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

ashmanskas avatar Feb 08 '24 20:02 ashmanskas