在我的django项目中,我有一个进口芹菜的__init__.py
文件,我怀疑这可能会导致tox抱怨。
/testproj/testproj/ ____init___.py
from .celery import app as celery_app
当我运行tox时,测试成功运行,但我看到了这个错误。
File "/dir/work/testproj/testproj/celery.py", line 2, in <module>
from celery import Celery
ImportError: cannot import name Celery
mobilereports installed: amqp==1.4.9,anyjson==0.3.3,appdirs==1.4.0,Babel==2.3.4,billiard==3.3.0.23,cached-property==1.3.0,celery==3.1.24
我觉得奇怪的是导入错误高于芹菜导入的实际导入。
为什么我收到此错误? Celery在我的requirements.txt
中,正如你在上面看到的那样由tox安装,那么为什么我会在deps实际安装之前得到一个导入错误?
tox.ini
[tox]
envlist = mobilereports
skipsdist = True
[env]
commands = ./runtests.sh
setenv =
DJANGO_SETTINGS_MODULE=testproj.settings
PYTHONPATH={toxinidir}
[base]
deps =
-r{toxinidir}/requirements.txt
[env:testproj]
basepython = python3
deps =
{[base]deps}
尝试将您的celery.py
文件重命名为其他内容。它可能掩盖了通过需求安装的celery
模块(因此from celery import Celery
线可以从模块本身导入)。