You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker化Python应用VSCode调试报错:Callable无_abc_registry属性

问题分析与解决方案

问题根源

从报错日志里的路径/.venv/lib/python3.8/site-packages/debugpy/adapter/../../typing.py能明确:你的项目根目录存在一个自定义的typing.py文件,Python导入模块时会优先加载项目内的同名文件,而非标准库的typing模块。这个自定义文件的实现不符合debugpy的预期,导致初始化Callable类时抛出AttributeError: type object 'Callable' has no attribute '_abc_registry',进而引发debugpy适配器连接超时,最终服务启动失败。

解决方案

1. 重命名冲突文件

找到项目根目录下的typing.py,将其重命名为不与Python标准库模块名冲突的名称,比如project_typing.py或custom_typing.py。

2. 同步修改代码中的导入引用

检查项目所有导入该自定义文件的代码,把导入语句从:

import typing

修改为:

import project_typing as typing  # 替换成你重命名后的文件名

3. 清理缓存并重建依赖

  • 删除虚拟环境里残留的冲突缓存文件:
    rm -rf .venv/lib/python3.8/site-packages/typing.py*
    rm -rf .venv/lib/python3.8/site-packages/__pycache__/typing.*
    
  • 也可以直接重建虚拟环境,彻底清除残留的冲突文件。

4. 优化Docker启动配置(可选)

当前entrypoint每次启动容器都会重新安装debugpy,建议把debugpy加入项目requirements.txt,或者在Dockerfile里提前安装,提升启动效率:

修改Dockerfile:

# 基于现有镜像基础上添加
RUN pip install debugpy

修改docker-compose.yml的entrypoint:

entrypoint:
  [
    "python",
    "-m",
    "debugpy",
    "--wait-for-client",
    "--listen",
    "0.0.0.0:5672",
    "-m",
    "entrypoint"
  ]

验证步骤

  1. 完成修改后重启容器:
    docker-compose up --build
    
  2. 观察容器日志,确认debugpy正常输出等待客户端连接的提示。
  3. 在VSCode中配置远程调试,目标端口设为5672,尝试连接并启动调试,验证功能正常。

内容的提问来源于stack exchange,提问作者Shikha Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:38:13