执行celery -A backend worker报No module named 'rest_framework'如何解决
问题原因与解决方案
问题根因
报错的核心原因是运行Celery命令的Python环境,和Poetry安装依赖的项目虚拟环境不匹配:
- 你执行
celery命令用的是系统全局Python环境(可通过报错日志里的/usr/local/bin/celery路径佐证),而djangorestframework是Poetry安装在项目专属虚拟环境中的依赖,全局环境没有安装该包,因此Celery启动加载Django的INSTALLED_APPS配置时找不到对应模块。
解决方案
方法1:激活虚拟环境后执行命令
进入项目根目录后,先执行命令激活Poetry虚拟环境,再启动Celery即可:
# 激活项目虚拟环境 poetry shell # 启动Celery celery -A backend worker -l info
方法2:用poetry run前缀直接执行命令
无需手动激活虚拟环境,直接在启动命令前加poetry run前缀,Poetry会自动调用项目虚拟环境的依赖执行命令:
poetry run celery -A backend worker -l info
验证与可选检查
- 执行启动命令前可先运行
pip list | grep djangorestframework,如果输出为空则说明当前环境确实未安装该依赖,使用上述两种方法执行后可再次验证,能正常输出版本信息即为环境匹配成功。 - 如果上述操作后仍报错,可检查两个配置:
- 确认
backend配置目录下存在空的__init__.py文件,用于将目录标记为Python包,确保Celery可以正常加载配置 - 确认
settings.py的INSTALLED_APPS中rest_framework拼写正确,无多余空格或拼写错误
- 确认
内容的提问来源于stack exchange,提问作者A.K.M. Adib
相关产品推荐
相关产品推荐

