使用Haystack 2.0.0与Django 1.5和Gunicorn WSGI时的ImportError

时间:2013-06-11 16:42:27

标签: django virtualenv wsgi django-haystack gunicorn

我使用django-haystack 2.0.0来索引我的网站,它一直运行良好,直到我升级到Django 1.5并开始使用WSGI接口。如果我只使用django_gunicorn命令它很有效,但Django文档“强烈建议”我使用gunicorn命令。

当我使用gunicorn命令启动我的网站时,Haystack会在任何页面加载时抛出以下错误:

ImportError: cannot import name signals

从Django或Python shell导入信号没有问题。我使用virtualenv并在该环境中本地安装所有包。我的wsgi.py文件看起来就像django admin中的默认文件,除了我将本地路径添加到python路径中:

path = os.sep.join(os.path.abspath(__file__).split(os.sep)[:-2])
if path not in sys.path:
    sys.path.append(path)`

非常感谢您提供的任何帮助,谢谢!

1 个答案:

答案 0 :(得分:7)

我不使用gunicorn,但是当我使用HAYSTACK_SIGNAL_PROCESSOR设置指向我编写的自定义类时,我遇到了同样的问题。该类导入了我的一个模型,最终传播了导入链,导入我的设置模块,从而导致循环导入。

当使用指向类的HAYSTACK_SIGNAL_PROCESSOR等设置时,请确保该类是独立的,并且不直接或间接导入Django设置文件。