[英]path error ImportError: attempted relative import with no known parent package
像下面这样的项目
server
├── celery.py
├── tasks.py
任务.py
from __future__ import absolute_import, unicode_literals
from sys import path
from .celery import app_celery
from time import sleep
@app_celery.task
def my_func():
sleep(5)
print("Process finished")
celery.py
from __future__ import absolute_import, unicode_literals
from celery import Celery
app_celery = Celery('server',
broker='redis://',
backend='redis://',
include=['server.tasks'])
app_celery.conf.update(
result_expires=3600,
)
if __name__ == '__main__':
app_celery.start()
celery -A server worker -l info
启动良好,进行如下测试,结果完美
$ ipython
Python 3.7.4 (default, Aug 13 2019, 20:35:49)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.8.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from server.tasks import my_func
In [2]: my_func.delay()
Out[2]: <AsyncResult: 39a21329-0e80-4f6e-ac08-536832414756>
我想在server
下添加一个脚本test.py
测试.py
from tasks import my_func
my_func.delay()
当我在server
下运行python test.py
时,它报告
Traceback (most recent call last):
File "test.py", line 2, in <module>
from tasks import my_func
File "/xxx/server/tasks.py", line 3, in <module>
from .celery import app_celery
ImportError: attempted relative import with no known parent package
在您的服务器目录中添加一个__init__.py
文件。 该文件可以为空。
Python 只允许在常规包中进行相对导入。 常规 package 定义为包含__init__.py
文件的目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.