[求助 celery+django] ImportError

2014-09-02 13:21:28 +08:00
 cbsw
项目用的是 django 1.3,芹菜官方文档给的是 modern django 的例子,折腾好久总是各种问题,这个 gist 里问题是从 web 端发的 task 报错,而从 shell 里发的正常执行 https://gist.github.com/dengshuan/a4adc7b690e101da0520

Stack Overflow 上问了半天没人回答( http://stackoverflow.com/questions/25614718/celery-with-django-1-3-keyerror-myproj-app1-tasks-add ),然后自己各种尝试,发现把 *views.py* 中 `from tasks import add` 改成 `from app1.tasks import add` 就可以了

但是项目中都是用 `from myproj.app1.module import something` 这种风格的 `import`,但是这种方式 celery server 直接启动不了,出现 **ImportError:No module named xxx**

有没有大神帮忙分析一下
3640 次点击
所在节点    Django
5 条回复
cbsw
2014-09-02 13:23:58 +08:00
为什么我用不了 Markdown 呢,还没有对所有人公开么? @Livid
bcxx
2014-09-02 13:36:54 +08:00
升级一下 django 会更简单吧……
cbsw
2014-09-02 14:10:19 +08:00
@bcxx 这个不是由我说了算的,而且升级过程中也会有大量问题的
wenbinwu
2014-09-02 15:37:04 +08:00
from .tasks import add
cbsw
2014-09-02 19:39:22 +08:00
@wenbinwu @bcxx 问题已解决,看了下 celery 源码,找到 import 部分发现只在当前目录和子目录查找模块,所以老版本的 django project(mycelery.py上层) 不在 celery 路径中,直接在 mycelery.py 中加上 `sys.path.append(os.path.abspath(os.pardir))` 把上层目录即 project 的路径加入即可,还是沿用了项目中的 `from projectname.appname.modulename import something` 的格式不变。

ImportError 多半是路径导致的,碰到这样问题应该先检查一下路径的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/131288

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX