严格遵循Graphene-Django基础教程遇ModuleNotFoundError问题求助
解决ModuleNotFoundError: No module named 'ingredients'问题
1. 确认目录结构合规
ingredients必须是标准Django应用,目录下需包含空的__init__.py文件(标识这是Python可导入模块),示例正确结构:
你的项目名/ ├── 你的项目名/ │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── ingredients/ │ ├── __init__.py │ ├── apps.py │ ├── models.py │ ├── schema.py │ └── 其他应用文件 └── manage.py
如果缺少__init__.py,直接创建一个空文件即可。
2. 检查INSTALLED_APPS配置
打开项目根目录的settings.py,确认ingredients和graphene_django已正确添加到INSTALLED_APPS列表:
INSTALLED_APPS = [ # 系统默认应用 'django.contrib.admin', 'django.contrib.auth', # ... # 添加以下两行 'ingredients', 'graphene_django', ]
注意应用名称拼写必须完全正确,不要添加多余路径前缀。
3. 验证Python路径包含项目根目录
Python无法找到模块可能是因为项目根目录不在sys.path中,可在manage.py开头添加代码验证并修复:
import sys import os # 打印当前Python路径列表 print(sys.path) # 确保项目根目录(包含ingredients的文件夹)在列表中,不在则手动添加 sys.path.append(os.path.dirname(os.path.abspath(__file__)))
执行python manage.py runserver查看输出,确认根目录已被纳入路径。
4. 检查导入语句正确性
如果在项目根的schema.py或其他文件中导入ingredients模块,必须使用正确的绝对导入路径:
# 正确写法 from ingredients.schema import Query as IngredientsQuery
避免使用错误的相对导入(如from .ingredients...),除非是在项目内部模块中且路径逻辑清晰。
5. 执行应用迁移验证
运行以下命令,若能正常执行,说明Django已识别ingredients应用:
python manage.py makemigrations ingredients python manage.py migrate
如果命令报错,说明应用本身存在配置问题,需排查models.py或apps.py的语法错误。
6. 确认虚拟环境一致性
若使用虚拟环境,确保当前终端已激活目标环境,且graphene-django、Django等依赖均安装在该环境内,避免跨环境导致模块找不到。
内容的提问来源于stack exchange,提问作者dras
相关产品推荐
相关产品推荐

