Django中出现No module named 'graphql.type'错误的求助
问题:Django+Ariadne运行时报错ModuleNotFoundError: No module named 'graphql.type'
我是Django和GraphQL的新手,正在跟着教程学习。在虚拟环境用Python 3.8,Windows系统用Python 3.10,两边都出现相同错误,也查过Stack Overflow上的相关问题。我听说GraphQL可以生成查询,但不知道具体操作,目前遇到的报错如下:
Traceback (most recent call last): File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner self.run() File "/usr/lib/python3.8/threading.py", line 870, in run self._target(*self._args, **self._kwargs) File "/home/talha/ve/lib/python3.8/site-packages/django/utils/autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "/home/talha/ve/lib/python3.8/site-packages/django/core/management/commands/runserver.py", line 125, in inner_run autoreload.raise_last_exception() File "/home/talha/ve/lib/python3.8/site-packages/django/utils/autoreload.py", line 87, in raise_last_exception raise _exception[1] File "/home/talha/ve/lib/python3.8/site-packages/django/core/management/__init__.py", line 398, in execute autoreload.check_errors(django.setup)() File "/home/talha/ve/lib/python3.8/site-packages/django/utils/autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "/home/talha/ve/lib/python3.8/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/home/talha/ve/lib/python3.8/site-packages/django/apps/registry.py", line 91, in populate app_config = AppConfig.create(entry) File "/home/talha/ve/lib/python3.8/site-packages/django/apps/config.py", line 193, in create import_module(entry) File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 783, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/home/talha/ve/lib/python3.8/site-packages/ariadne/__init__.py", line 1, in <module> from .enums import ( File "/home/talha/ve/lib/python3.8/site-packages/ariadne/enums.py", line 17, in <module> from graphql.type import GraphQLEnumType, GraphQLNamedType, GraphQLSchema ModuleNotFoundError: No module named 'graphql.type'
解决方法
这个错误是因为Ariadne依赖的graphql-core包未正确安装,或者版本不兼容导致的,按以下步骤修复:
- 卸载现有冲突的包:
pip uninstall -y graphql-core graphql-relay ariadne
- 重新安装兼容版本的依赖:
直接让pip自动处理兼容配置:
pip install ariadne
如果自动安装仍有问题,手动指定经过验证的兼容版本:
pip install graphql-core==3.2.3 ariadne==0.20.0
- 验证安装结果:
pip list | grep graphql
确保输出中存在graphql-core,且版本符合Ariadne的要求。
关于GraphQL生成查询的操作说明
当你配置好Ariadne和Django后,有两种常用方式生成并执行查询:
- GraphQL Playground:启动Django服务后,访问
http://localhost:8000/graphql(路径根据你的配置调整),在界面中编写查询语句,比如:
query { allPosts { id title } }
点击执行按钮即可获取返回的数据。
- curl命令:通过POST请求发送查询到GraphQL端点:
curl -X POST -H "Content-Type: application/json" -d '{"query": "query { allPosts { id title } }"}' http://localhost:8000/graphql
内容的提问来源于stack exchange,提问作者Talha Zafar
相关产品推荐
相关产品推荐

