运行结构脚本抛出ImportError:没有名为celery的模块

时间:2014-03-10 20:28:12

标签: python django celery fabric

我现在已经聆听了很长一段时间。

一旦我运行任何结构脚本,它就会从我的ImportError: No module named celery文件中抛出proj/proj/celery.py。发生了什么事?

完整追溯:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/fabric/main.py", line 658, in main
    docstring, callables, default = load_fabfile(fabfile)
  File "/usr/local/lib/python2.7/dist-packages/fabric/main.py", line 165, in load_fabfile
    imported = importer(os.path.splitext(fabfile)[0])
  File "/home/username/Projects/proj/fabfile/__init__.py", line 2, in <module>
    from .staging import *
  File "/home/username/Projects/proj/fabfile/staging.py", line 3, in <module>
    from proj.settings.staging import DOMAIN, IP, USER, PASSWORD
  File "/home/username/Projects/proj/proj/__init__.py", line 5, in <module>
    from .celery import app as celery_app
  File "/home/username/Projects/proj/proj/celery.py", line 3, in <module>
    from celery import Celery
ImportError: No module named celery

编辑: 我不认为我的结构脚本的内容与它有任何关系。为了举例,我设置了:

from fabric.api import local
def foo():
    local('echo bar')

致电fab foo加注ImportError: No module named celery。实际上,如果我只调用fab,结果是相同的。

我的proj/proj/__init__.py

from __future__ import absolute_import

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app

celery tutorial

一样

编辑:

这有效:

(venv)rg@dfi:~/Projects/proj$ python
Python 2.7.4 (default, Sep 26 2013, 03:20:26) 
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from celery import Celery
>>> 

2 个答案:

答案 0 :(得分:0)

解决方法是安装系统范围的芹菜,但这显然不是织物所需的行为。

答案 1 :(得分:0)

我偶然发现了同样的问题。由于我想从结构发送任务而不是注册任务,所以我使用了celery命令行界面:

from fabric.api import local

def run_slow_tests():
    local("celery call 'myapp.tasks.run_slow_tests'")