Python 我能';不要用芹菜

Python 我能';不要用芹菜,python,python-3.x,celery,Python,Python 3.x,Celery,我有以下文件夹: proj ├── __init__.py ├── celery.py ├── tasks.py ├── foo_launcher.py 首先,我必须启动芹菜工人 celery -A proj worker -l info celery.py代码: from __future__ import absolute_import, unicode_literals from celery import Celery app = Celery('project', bro

我有以下文件夹:

proj
 ├── __init__.py
 ├── celery.py
 ├── tasks.py
 ├── foo_launcher.py
首先,我必须启动芹菜工人

celery -A proj worker -l info
celery.py代码:

from __future__ import absolute_import, unicode_literals
from celery import Celery

app = Celery('project', broker='amqp://guest@localhost//', include=['project.tasks'])


if __name__ == '__main__':
   app.start()
芹菜工人工作得很好,但是当我要启动
foo_launcher.py
时,我不能使用这些任务,因为
foo_launcher.py
依赖于
tasks.py
tasks.py
依赖于
芹菜.py
。问题就在这里。我需要导入芹菜.py文件而不是芹菜库

这就是
tasks.py

from  .celery import app #Here Import celery.py not celery library

@app.task
def add(x, y):
   return x + y
from tasks import add

result = add.apply_async((2,2), queue='lopri',coutdown=10)
print(result)
这里是
foo_launcher.py

from  .celery import app #Here Import celery.py not celery library

@app.task
def add(x, y):
   return x + y
from tasks import add

result = add.apply_async((2,2), queue='lopri',coutdown=10)
print(result)
所有这些都很有意义,但当我尝试启动
foo_launcher.py

python foo_launcher.py
它向我启动以下错误:

Traceback (most recent call last):
    File ".\foo_launcher.py", line 1, in <module>
        from tasks import add
    File "C:\Users\beca4\Desktop\proj\tasks.py", line 1, in <module>     
        from  .celery import app                                                                                           
ImportError: attempted relative import with no known parent package   
回溯(最近一次呼叫最后一次):
文件“\foo\u launcher.py”,第1行,在
从任务导入添加
文件“C:\Users\beca4\Desktop\proj\tasks.py”,第1行,在
来自。芹菜导入应用程序
ImportError:尝试在没有已知父包的情况下进行相对导入

我不知道我能做什么。有什么想法吗?

芹菜。py
芹菜
模块同名


您最好更改
芹菜.py
的文件名,例如,
mq.py

确保您有
\uuuu init\uuuuuuuuuuuuuupy
文件

from  .celery import app #Here Import celery.py not celery library

@app.task
def add(x, y):
   return x + y
from tasks import add

result = add.apply_async((2,2), queue='lopri',coutdown=10)
print(result)
然后从上面的一个目录中导入python.exe并导入tasks/foo_午餐器.py-

cd ..

python
>> import projectdirectory.tasks
  • projectdirectory是包含
    \uuuu init\uuuu.py
    文件的目录