我现在已经聆听了很长一段时间。
celery==3.1.9
。一旦我运行任何结构脚本,它就会从我的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
一样
编辑:
这有效:
(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
>>>
答案 0 :(得分:0)
解决方法是安装系统范围的芹菜,但这显然不是织物所需的行为。
答案 1 :(得分:0)
我偶然发现了同样的问题。由于我想从结构发送任务而不是注册任务,所以我使用了celery命令行界面:
from fabric.api import local
def run_slow_tests():
local("celery call 'myapp.tasks.run_slow_tests'")