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

运行main.py报cannot import name 'ResolveInfo' from 'graphql'冲突求解

问题核心
  1. 依赖冲突根源:graphene及相关生态包最高适配graphql-core 3.1.x版本,而新版ariadne要求graphql-core >=3.2,二者版本要求无法同时满足。
  2. 依赖解析失败:你配置中black = "*"时pipenv默认跳过预发布版本,而black早期版本全部为beta/alpha版,因此找不到匹配包。
可行解决方案

方案1:版本锁定(无需修改现有业务代码)

直接锁定所有依赖到互相兼容的版本,ariadne 0.15.x是最后一个支持graphql-core 3.1.x的版本,可以同时适配graphene生态。

操作步骤

  1. 删除当前项目下的Pipfile、Pipfile.lock,并移除现有虚拟环境,避免缓存干扰
  2. 将Pipfile中的依赖替换为以下固定版本:
uvicorn = "==0.20.0"
fastapi = "==0.95.2"
graphene = "==3.2.2"
starlette = "==0.27.0"
ariadne = "==0.15.1"
alembic = "==1.10.4"
aniso8601 = "==9.0.1"
appdirs = "==1.4.4"
asgiref = "==3.6.0"
black = "==23.3.0"
click = "==8.1.3"
colorama = "==0.4.6"
graphene-sqlalchemy = "==3.0.0"
graphql-relay = "==3.2.0"
graphql-core = "==3.1.7"
greenlet = "==2.0.2"
h11 = "==0.14.0"
mypy-extensions = "==1.0.0"
pathspec = "==0.11.1"
promise = "==2.3"
psycopg2-binary = "==2.9.6"
pydantic = "==1.10.7"
python-dateutil = "==2.8.2"
python-dotenv = "==1.0.0"
python-editor = "==1.0.4"
regex = "==2023.3.23"
singledispatch = "==3.7.0"
six = "==1.16.0"
toml = "==0.10.2"
typing-extensions = "==4.5.0"
dill = "==0.2.4"
Mako = "==1.2.4"
MarkupSafe = "==2.1.2"
Rx = "==3.2.0"
SQLAlchemy = "==1.4.48"
  1. 执行pipenv install完成安装即可,不会再出现版本冲突问题。

代码微调

你现有main.py中导入的QueryType未使用,可以直接删除该行,不影响功能运行。

方案2:统一技术栈(彻底避免冲突)

直接将原有graphene实现的查询、突变接口全部迁移到ariadne,ariadne本身原生支持普通查询、突变、订阅全场景,无需同时维护两个GraphQL框架,从根源上消除依赖冲突。

内容的提问来源于stack exchange,提问作者Ali Husham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:48:02