Agent项目报错问题解决(不定时更新)
一、ModuleNotFoundError: No module named ‘pkg_resources’报错现象安装或启动 Doccano 时终端抛出如下错误流程直接中断ModuleNotFoundError: No module named pkg_resourcespkg_resources是 setuptools 提供的子模块Doccano 的部分依赖在运行时会import pkg_resources来读取包的元信息。一旦这个模块缺失初始化就卡在这一步。报错原因根因在于setuptools 82.0.0 正式移除了 pkg_resources 模块。setuptools 官方自 2024 年起将 pkg_resources 标记为弃用并在 82.0.0 版本中彻底删除。如果当前环境装的是这个版本或更高版本所有依赖 pkg_resources 的项目都会报同样的错。换句话说不是你漏装了什么而是 setuptools 升级后把它砍掉了 [1][2]。解决办法把 setuptools 降级到 82.0.0 以下并强制重新安装python-mpipinstallsetuptools82.0.0--force-reinstall验证安装完成后在终端里直接导入该模块确认不再报错python-cimport pkg_resources; print(pkg_resources 可用)若输出pkg_resources 可用说明降级成功可以继续后续安装步骤。二、AttributeError: module ‘marshmallow’ has no attribute ‘version_info’报错现象解决完上一个问题后执行doccano init时又冒出新的报错AttributeError: module marshmallow has no attribute __version_info__初始化流程在这一步中断数据库和超级用户都没能创建。报错原因这是一个典型的依赖的依赖不兼容问题。依赖链条是这样的Doccano → environs环境变量管理库→ marshmallow。environs 内部会读取marshmallow.__version_info__来判断 marshmallow 的版本进而走不同的兼容逻辑。但较新版本的 marshmallow约 3.10 之后已经移除了__version_info__这个属性。当 pip 自动解析依赖时装上了高版本 marshmallowenvirons 在调用这个属性时就抛出了 AttributeError [3][4]。简单说不是 marshmallow 本身坏了而是 marshmallow 升级后删掉了 environs 还在用的接口两者对不上。解决办法卸载当前的高版本 marshmallow装回兼容的 3.7.0 版本pip uninstall marshmallow pipinstallmarshmallow3.7.0若命令正常跑完没有再抛出 AttributeError并提示数据库初始化完成、要求创建管理员账号说明问题已解决。之后用doccano createuser创建好账号就可以doccano webserver启动服务了。三、ERROR: function uuid_generate_v4() does not exist报错现象继续往下走doccano init在初始化数据库表结构时又抛出一串 PostgreSQL 报错日志里带有明确的时间戳、错误码和位置信息[2026-06-29 11:50:50] [42883] ERROR: function uuid_generate_v4() does not exist [2026-06-29 11:50:50] 建议No function matches the given name and argument types. You might need to add explicit type casts. [2026-06-29 11:50:50] 位置82错误码42883在 PostgreSQL 里表示未定义函数意思是数据库里根本没有uuid_generate_v4()这个函数导致建表语句在生成 UUID 主键时失败。报错原因Doccano 的表结构用uuid_generate_v4()作为主键默认值来生成 UUID。但这个函数并不是 PostgreSQL 自带的——它由uuid-ossp扩展提供而 PostgreSQL 默认安装并不会自动加载这个扩展所以函数在当前数据库里不可用调用时就报未定义函数 [1][2]。需要留意的是PostgreSQL 13 起内置了gen_random_uuid()函数来生成 UUID v4不需要任何扩展但uuid_generate_v4()这个名字仍然依赖uuid-ossp两者不是一回事 [3]。Doccano 用的是后者所以必须把扩展装上。解决办法连接到 Doccano 使用的那个数据库执行一条 SQL 启用扩展CREATEEXTENSIONIFNOTEXISTSuuid-ossp;如果执行时提示权限不足需要换用更高权限的账号如 postgres 超级用户来执行这条语句 [1]。验证启用扩展后先单独调用一下该函数确认能正常生成 UUIDSELECTuuid_generate_v4();若返回一串形如550e8400-e29b-41d4-a716-446655440000的 UUID说明函数已可用。