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

安装graphene-federation引发依赖冲突及get_default_backend导入错误求助

解决ImportError: cannot import name 'get_default_backend' from 'graphql'

问题原因

你安装的Flask-GraphQL==2.0.0是为Graphene 2.x和GraphQL-Core 2.x设计的,它内部依赖graphql.get_default_backend函数,但这个函数在GraphQL-Core 3.x(你当前使用的是3.2.0)中已被移除,版本不兼容触发了导入错误。

可行解决方案

方案1:移除Flask-GraphQL,改用Starlette-Graphene3对接Flask(推荐)

你已经引入了starlette-graphene3,它是适配Graphene 3.x的官方推荐方案,具体步骤如下:

1. 更新依赖包

修改requirements.txt,移除Flask-GraphQL,同时升级Flask到支持ASGI的版本(Flask 2.0+兼容旧代码):

Flask                 2.2.5
graphene              3.1
graphene-federation   3.1.4
graphene-sqlalchemy   2.1.0
graphql-core          3.2.0
graphql-relay         3.1.0
graphql-utilities     0.4.0
starlette             0.25.0
starlette-graphene3   0.6.0

执行pip install -r requirements.txt更新依赖。

2. 重构GraphQL服务代码

替换原来基于Flask-GraphQL的代码:

from flask import Flask
from starlette.applications import Starlette
from starlette_graphene3 import GraphQLApp, make_graphiql_handler
from your_schema_module import schema  # 替换为你的Graphene 3 schema(包含federation配置)

# 初始化Flask应用,保留原有路由逻辑
flask_app = Flask(__name__)

# 初始化Starlette应用处理GraphQL请求
starlette_app = Starlette()
# 挂载GraphQL端点并启用GraphiQL IDE
starlette_app.mount('/graphql', GraphQLApp(schema=schema, on_get=make_graphiql_handler()))

# 合并Flask与Starlette应用,通过ASGI运行
from flask_asgi import FlaskASGI
asgi_app = FlaskASGI(flask_app)
asgi_app.mount('/graphql', starlette_app)

if __name__ == '__main__':
    import uvicorn
    # 用uvicorn启动ASGI服务
    uvicorn.run(asgi_app, host='0.0.0.0', port=5000)

方案2:临时兼容(不推荐,仅过渡用)

如果暂时不想重构代码,可以手动修改Flask-GraphQL的源码:
找到Flask-GraphQL中导入get_default_backend的文件(通常是view.py),将:

from graphql import get_default_backend

替换为:

from graphql.backend import GraphQLCoreBackend

def get_default_backend():
    return GraphQLCoreBackend()

这种方式需要修改第三方包文件,稳定性差,不建议长期使用。

验证

启动服务后,访问http://localhost:5000/graphql,应该能正常打开GraphiQL IDE,且Federation相关查询可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 08:10:09