干草堆/飞快指数生成错误

Kei*_*ald 3 python django whoosh django-haystack

我正试图用后嘶嘶声设置干草堆.当我尝试生成索引[或任何索引命令]时,我收到:

TypeError: Item in ``from list'' not a string
Run Code Online (Sandbox Code Playgroud)

如果我完全删除我的search_indexes.py我得到相同的错误[所以我猜它根本找不到该文件]

什么可能导致这个错误?它设置为自动发现,我确定我的应用程序已安装,因为我正在使用它.

完全追溯:

    Traceback (most recent call last):
  File "./manage.py", line 17, in <module>
    execute_manager(settings)
  File "/Users/ghostrocket/Development/Redux/.dependencies/django/core/management/__init__.py", line 362, in execute_manager
    utility.execute()
  File "/Users/ghostrocket/Development/Redux/.dependencies/django/core/management/__init__.py", line 303, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/ghostrocket/Development/Redux/.dependencies/django/core/management/__init__.py", line 257, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/Users/ghostrocket/Development/Redux/.dependencies/django/core/management/__init__.py", line 67, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/Users/ghostrocket/Development/Redux/.dependencies/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Users/ghostrocket/Development/Redux/.dependencies/haystack/__init__.py", line 124, in <module>
    handle_registrations()
  File "/Users/ghostrocket/Development/Redux/.dependencies/haystack/__init__.py", line 121, in handle_registrations
    search_sites_conf = __import__(settings.HAYSTACK_SITECONF)
  File "/Users/ghostrocket/Development/Redux/website/../website/search_sites.py", line 2, in <module>
    haystack.autodiscover()
  File "/Users/ghostrocket/Development/Redux/.dependencies/haystack/__init__.py", line 83, in autodiscover
    app_path = __import__(app, {}, {}, [app.split('.')[-1]]).__path__
TypeError: Item in ``from list'' not a string
Run Code Online (Sandbox Code Playgroud)

这是我的search_indexes.py

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

site.register(myobject)
Run Code Online (Sandbox Code Playgroud)

Rom*_*løk 8

我刚刚遇到了具有完全不同堆栈的相同TypeError消息.

搜索整个错误消息带来了两个结果:这个问题,以及Python的import.c的源代码.所以经过一番挖掘,我发现当__import__内置函数传递一个不是字符串的导入名称时会引起这个特殊的错误.

重要的一个词是字符串 - 即.一个str对象.任何其他(例如unicode)将被拒绝,并带有此处描述的错误.

所以解决方案是:无论你将模块/成员名称传递给动态导入它的地方,都要确保它是a str而不是a unicode.

失败:

__import__('mylib.foo', globals(), locals(), [u'bar'])
Run Code Online (Sandbox Code Playgroud)

工作:

__import__('mylib.foo', globals(), locals(), ['bar'])
__import__(u'mylib.foo', globals(), locals(), ['bar'])
Run Code Online (Sandbox Code Playgroud)

当然,这可能只与Python 2.x有关,因为3.x的字符串/ unicode不同.