我最近一直在为这个琐碎的问题伤透脑筋,到目前为止,我在网上找不到任何帮助。我正在使用virtualenv,我的项目结构:
myproj
..bin
..tasks.py
..celery_app.py
..projapi
其中importFolder是一个API文件夹,里面有一堆文件。proj.py是我的脚本,它完成了所有的工作,并包含像这样的导入
sys.path.append("/abspath/to/projapi")
import projapi
我可以很好地源bin/activate并输入我的virtualenv,但当我返回一个目录并运行芹菜工作程序时:
celery -A myproj worker --app=myproj.celery_app:app -l info
对于myproj目录中的每个文件夹,我都会得到一个导入错误,例如"projapi"的importerror。就好像virtualenv只在/bin目录中查找所有文件(其中my-proj在myproj目录中)
我该怎么解决这个问题?我尝试过在activate和tasks.py中添加各种系统和python路径,但都无济于事。
可能您使用的是系统范围的芹菜。尝试在虚拟环境中安装pip并重复执行,这将解决您的问题。
还要验证.py
所在的每个文件夹是否包含__init__.py
文件。
您尝试过更改celery
调用本身吗?
celery -A celery_app worker -E -l INFO