【问题标题】:Error when trying to build schema with Haystack and Solr尝试使用 Haystack 和 Solr 构建架构时出错
【发布时间】:2016-10-15 07:31:20
【问题描述】:

我一直在关注“Django by example”的教程,该教程介绍了 Solr 和 Haystack,但遇到了问题。我已在 settings.py 中对 INSTALLED_APPS 进行了必要的更改,并添加了以下内容:

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.solr_backends.SolrEngine',
        'URL': 'http://127.0.0.1:8938/solr/blog'
    }, 
}

然后我运行

python manage.py build_solr_schema

我得到了这个错误

ImportError: No module named 'haystack.backends.solr_backends'

这是我的 search_indexes.py 文件

   from haystack import indexes
   from .models import Post
   class PostIndex(indexes.SearchIndex, indexes.Indexable):
   text = indexes.CharField(document=True, use_template=True)
   publish = indexes.DateTimeField(model_attr='publish')
   def get_model(self):
       return Post
   def index_queryset(self, using=None):
       return self.get_model().published.all()

当我运行 django shell 时,我可以很好地导入 haystack,但是当我运行以下命令时:

from haystack.query import SearchQuerySet
sqs = SearchQuerySet().all()
sqs.count()

进入第二行后我得到了完全相同的错误。

我试过重启 Solr,还是不行。

我让 Solr 在本地正常工作,并在管理员中创建了一个新核心,并在此处设置了所有文件,并从安装附带的示例文件夹中复制了所有必需的文件:

/usr/local/opt/solr/server/solr/blog/conf

我在这里错过了什么?谢谢

编辑:我想补充一点,我已经安装了带有 venv 的 django-haystack 和 pysolr,但是如果我执行 pip freeze,它们都会出现。 Solr 是通过 Homebrew 安装的。

【问题讨论】:

    标签: python django solr


    【解决方案1】:

    第一次将 Haystack 添加到您的项目时,通常会出现此问题。

    1.您是否在 django-haystack checkout/install 中使用 haystack 目录?

    2. haystack 目录在你的 PYTHONPATH 上吗?或者,干草堆是否符号链接到您的项目中?

    3.启动一个 Django shell (./manage.py shell) 并尝试 import haystack。您可能会收到一条不同的、更具描述性的错误消息。

    4. 仔细检查以确保您没有循环导入。 (即模块 A 尝试从模块 B 导入,而模块 B 正在尝试从模块 A 导入。)

    【讨论】:

    • #1 - 我不确定,我在我的 venv 中,我在 venv 中安装了 django-haystack,它显示为 pip freeze #2 我想是这样吗?这是我的 PATH /Users/david/Documents/projects/django/mysite/venv/bin:/Applications/Postgres.app/Contents/Versions/9.4/bin/:/usr/local/bin:/usr/local/bin :/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin 我是用 pip 安装的,所以它不负责吗? #3 我已经试过了,可以很好地导入 #4 我看不到
    • 谢谢,但该链接如何解决我的问题?那个人被纠正了使用 sudo 和他们的 pip 安装,我没有这样做,当我执行 pip freeze 时,django-haystack 也显示得很好,我可以将它导入 django shell,当我用 pip show 检查它的安装位置时我可以看到它安装在我的 venv 中的正确位置。我感谢您的贡献,但我认为我仍然停留在同一个地方:(
    【解决方案2】:

    所以我最终发现这里只是一个拼写错误

    “引擎”:“haystack.backends.solr_backends.SolrEngine”,

    这应该是 'solr_backend' 而不是复数:|

    【讨论】:

      猜你喜欢
      • 2012-10-15
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多