Python中Django项目中的celery.py文件无法导入from celery import Celery的解决方法
根着官网的 demo
创建了celery.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
但是 pycharm 提示 unresoloved reference Celery
这是怎么回事呢
Python中Django项目中的celery.py文件无法导入from celery import Celery的解决方法
面向谷歌编程了解一下
这个问题我遇到过,通常是因为环境配置或导入路径的问题。
首先检查你的celery版本是否正确安装:
pip install celery
如果已经安装,最常见的问题是celery.py文件位置和导入冲突。Django项目结构应该是这样的:
your_project/
├── your_project/
│ ├── __init__.py
│ ├── celery.py # 你的celery配置文件
│ ├── settings.py
│ └── urls.py
└── manage.py
在your_project/__init__.py中需要添加:
from .celery import app as celery_app
__all__ = ('celery_app',)
在celery.py中的标准配置应该是:
import os
from celery import Celery
# 设置Django的默认设置模块
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
app = Celery('your_project')
# 使用Django的设置文件配置Celery
app.config_from_object('django.conf:settings', namespace='CELERY')
# 自动发现任务
app.autodiscover_tasks()
如果还是报错,可能是Python路径问题。尝试在命令行中测试:
python -c "from celery import Celery; print('导入成功')"
如果这个测试失败,说明celery包没有正确安装。使用pip list | grep celery检查是否安装。
另一个常见坑:确保你的文件不叫celery.py以外的名字,且不要有同名的celery模块在PYTHONPATH中。
总结:检查安装和文件结构。
你的模块叫 celery,官方库也叫 celery
你创建的文件名不能和要 import 的重名,不然会 import 到自己
我第一次用 tornado 就是这样的🌚
官方 demo 说 from future import absolute_import 这样就能避免本地的 celery.py 和 celery 库冲突
但是依然冲突了。
我贴的代码就是官方给的例子
打开 pycharm 设置,里面的解释器选项,确认 celery 模块已经别加载了。
不太明白你在 django 的目录中,为什么要新建一个 celery.py ?
我不建议这么做。你只需要新建一个 tasks.py ,里面写上你的任务。
然后在 Django 的 setting.py 中配置 celery 的参数,(当然,如果你嫌麻烦,你可以新建一个单独的 celery 配置模块,比如名字叫 celeryconfig.py),这里面需要配置后端数据库,定时任务的时间,配合 djcelery 是最完美的。
建议参考下文章:
http://www.mamicode.com/info-detail-2278246.html
(网上搜的,打开居然一看,转载了我的)
不嫌麻烦就新建一个 celery 的配置文件,不要取与 celery 重名。
想偷懒的话,按照上面的博文去操作即可。
所有的配置都撸在 settings.py 里面。简简单单,逻辑清晰,代码也不算混乱。

