Shikha Singh
Shikha Singh

Reputation: 1

AttributeError: type object 'Callable' has no attribute '_abc_registry' -- debugging Dockerized Python Apps on VS Code

Steps to reproduce: Run the below docker compose file where am installing debugpy and using debugpy to connect to port 5672!

Broken pip -- tried downgrading the pip version to pip 20.0.2 yet that didnt work! pip version bash-5.1# pip --version pip 23.0 from /.venv/lib/python3.8/site-packages/pip (python 3.8)

docker-compose.yml

services:
  srvr:
    build:
      context: ../..
      dockerfile: Dockerfile
    hostname: srvr
    container_name: srvr
    networks:
      - fyndnet
    entrypoint:
      [
        "sh",
        "-c",
        "pip install --upgrade debugpy && python -m debugpy --wait-for-client --listen 0.0.0.0:5672 -m entrypoint",
      ]
    volumes:
      - ../..:/srv/data
    environment:
      - MODE=server
    env_file:
      - $env_file_name
    image: python:latest
    tty: true
    ports:
      - "$Port1:8085"
      - 5672:5672

Collecting debugpy
server    |   Downloading debugpy-1.8.1-py2.py3-none-any.whl (4.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.8/4.8 MB 1.3 MB/s eta 0:00:00
server    | Installing collected packages: debugpy
server    | Successfully installed debugpy-1.8.1
server    | 
server    | [notice] A new release of pip is available: 23.0 -> 24.0
server    | [notice] To update, run: pip install --upgrade pip
server    | Traceback (most recent call last):
server    |   File "/usr/local/lib/python3.8/runpy.py", line 194, in _run_module_as_main
server    |     return _run_code(code, main_globals, None,
server    |   File "/usr/local/lib/python3.8/runpy.py", line 87, in _run_code
server    |     exec(code, run_globals)
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/adapter/__main__.py", line 215, in <module>
server    |     __import__("debugpy")
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/adapter/../../debugpy/__init__.py", line 35, in <module>
server    |     from debugpy.public_api import *  # noqa
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/adapter/../../debugpy/public_api.py", line 8, in <module>
server    |     import typing
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/adapter/../../typing.py", line 1359, in <module>
server    |     class Callable(extra=collections_abc.Callable, metaclass=CallableMeta):
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/adapter/../../typing.py", line 1007, in __new__
server    |     self._abc_registry = extra._abc_registry
server    | AttributeError: type object 'Callable' has no attribute '_abc_registry'
server    | Traceback (most recent call last):
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/server/api.py", line 237, in listen
server    |     sock, _ = endpoints_listener.accept()
server    |   File "/usr/local/lib/python3.8/socket.py", line 292, in accept
server    |     fd, addr = self._accept()
server    | socket.timeout: timed out
server    | 
server    | During handling of the above exception, another exception occurred:
server    | 
server    | Traceback (most recent call last):
server    |   File "/usr/local/lib/python3.8/runpy.py", line 194, in _run_module_as_main
server    |     return _run_code(code, main_globals, None,
server    |   File "/usr/local/lib/python3.8/runpy.py", line 87, in _run_code
server    |     exec(code, run_globals)
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/__main__.py", line 39, in <module>
server    |     cli.main()
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/server/cli.py", line 430, in main
server    |     run()
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/server/cli.py", line 302, in run_module
server    |     start_debugging(argv_0)
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/server/cli.py", line 256, in start_debugging
server    |     debugpy.listen(options.address)
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/public_api.py", line 31, in wrapper
server    |     return wrapped(*args, **kwargs)
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/server/api.py", line 143, in debug
server    |     log.reraise_exception("{0}() failed:", func.__name__, level="info")
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/server/api.py", line 141, in debug
server    |     return func(address, settrace_kwargs, **kwargs)
server    |   File "/.venv/lib/python3.8/site-packages/debugpy/server/api.py", line 251, in listen
server    |     raise RuntimeError("timed out waiting for adapter to connect")
server    | RuntimeError: timed out waiting for adapter to connect
server exited with code 1

I attempted to use the debugpy library to run a debugger on VSCode by executing the above docker-compose.yml file

pip install --upgrade debugpy && python -m debugpy --wait-for-client --listen 0.0.0.0:5672 -m entrypoint

However, when trying to connect to port 5672, I encountered an AttributeError with the message: "type object 'Callable' has no attribute '_abc_registry'".

I was expecting the debugpy library to start successfully and wait for a client connection on port 5672, allowing me to debug my application using VSCode. However, due to the AttributeError, the connection was not established, and debugging was not possible.

Upvotes: 0

Views: 430

Answers (1)

Khalid
Khalid

Reputation: 49

Uninstalling typing worked for me. In your docker compose uninstall the package. I am using python 3.11, This package removal did not break my app however typing is used within the app. I guess it is using builtin typing module within python3.11.

command: 
sh -c  "pip install --upgrade debugpy && pip uninstall --yes typing && python -m debugpy --wait-for-client  --listen 0.0.0.0:5678 -m entrypoint

Upvotes: 0

Related Questions