草堆/呼啸指数E代

2024-03-29 11:17:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用whoosh后端设置haystack。当我试图生成索引[或与此相关的任何索引命令]时,我收到:

TypeError: Item in ``from list'' not a string

如果我完全取消搜索_索引.py我得到了同样的错误[所以我猜它根本找不到那个文件]

什么会导致这个错误?它被设置为自动发现,我确信我的应用程序已经安装,因为我正在使用它。在

完全回溯:

^{pr2}$

这是我的搜索_索引.py在

from haystack import indexes
from haystack import site
from myproject.models import *

site.register(myobject)

Tags: 文件infrompyimport命令string错误
3条回答

我刚刚遇到了一个完全不同的堆栈的同一个TypeError消息。在

搜索整个错误消息会得到两个结果:这个问题和Python的import.c源代码。 因此,经过一点挖掘之后,我发现这个特定的错误是由于向__import__内置函数传递了一个不是字符串的导入名称时引起的。在

重要的词是string-ie.astr对象。其他任何内容(例如unicode)都将被拒绝,并出现这里描述的错误。在

因此,解决方案是:无论您将模块/成员名称传递给将动态导入它的某个对象,请确保它是str,而不是unicode。在

失败:

__import__('mylib.foo', globals(), locals(), [u'bar'])

工作:

^{pr2}$

当然,这可能只与Python2.x有关,因为3.x处理字符串/unicode的方式不同。在

在我的例子中,这发生在我将django tastype升级到v0.10之后。作为Py3移植工作的一部分,from __future__ import unicode_literals被添加到迁移的顶部。在

在每个tastypei迁移文件中注释了这一行之后,我的迁移运行正常。在

我发现令人费解的是,tastype迁移昨天在新的tastype版本中运行得很好(在共享相同virtualenv的单独项目中)。那将是另一天的谜。在

你好像遇到了两个问题。在

第一个是生成TypeError的。它发生在Haystack搜索你在INSTALLED_APPS中列出的每个应用程序进行搜索时发生的_索引.py(因为您正在自动注册)。我不确定到底是什么问题,但我先在您的项目中搜索from list,然后再次检查代码。我以前没有遇到过这种异常,但是如果在您编写的代码中发生了这种情况,您应该在您的问题中发布任何相关的部分

我相信你在搜索或不搜索时会得到同样的错误的原因_索引.py文件是因为它从未达到尝试执行该文件中的代码的程度。在

也就是说,该文件中应该有更多的内容(这是第二个问题)。您必须创建一个索引类(继承自haystack.index.SearchIndex)把它注册到模型上。有关说明和示例,请参见this section of the documentation。在

我也会在django-haystack Google Group中问这个问题,因为haystack的作者和其他用户会在那里看到它,而且他们往往会非常有帮助。在

相关问题 更多 >