Django+Celery+RabbitMQ运行worker报django.config模块缺失错误如何解决
问题根因
你遇到的ModuleNotFoundError: No module named 'django.config'报错和是否使用虚拟环境没有直接关系,核心问题是Celery加载Django配置时的路径配置错误:Celery尝试导入不存在的django.config模块,说明你项目中Celery初始化配置里的Django配置模块路径写错了。
解决步骤
- 首先打开你项目根目录下的Celery初始化文件(一般是
project_name/celery.py),找到设置DJANGO_SETTINGS_MODULE的代码行,错误写法大概率是:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django.config.settings')
修改为你的Django项目实际配置路径,你的项目名是project_name,直接改成:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')
- 如果修改配置后还是报错,执行
pip show django检查当前执行命令的Python环境有没有安装Django,没有的话执行pip install django安装即可 - 配置修复完成后重新执行Celery启动命令即可:
celery -A project_name worker -l info
虚拟环境相关问题解答
不重建项目迁移到虚拟环境的方法
本身你本次的报错和虚拟环境无关,如果需要把现有项目迁移到虚拟环境,完全不需要重建项目,操作非常简单。
PyCharm迁移到venv虚拟环境的操作难度
操作难度极低,全程可视化操作,5分钟即可完成,步骤如下:
- 打开你的项目,依次点击
文件 > 设置 > 项目: project_name > Python解释器 - 点击解释器右侧的齿轮图标,选择
添加 - 在弹出的窗口左侧选择
Virtualenv Environment,右侧选择新环境,指定虚拟环境存放路径(默认放在项目根目录的venv文件夹即可),基础解释器选择你当前用的Python3.7版本 - 点击确定等待虚拟环境创建完成,之后在该解释器下重新安装你项目依赖的所有包(比如Django、Celery等)
- 后续运行项目、执行Celery命令时,PyCharm会自动激活虚拟环境;如果手动在命令行执行,先运行项目
venv/Scripts/activate脚本激活虚拟环境即可
补充说明:你在非虚拟环境下启动的RabbitMQ服务确实和本次报错无关,只要Celery配置里的RabbitMQ连接地址正确就能正常通信。
内容的提问来源于stack exchange,提问作者Callum
相关产品推荐
相关产品推荐

