导入 django-sphinxsearch 时出现语法错误

问题描述

我正在尝试运行标准的 django 迁移命令,例如,python3 manage.py makemigrations,并且在使用 sphinxsearch 进行模块导入时不断出现语法错误。 我知道它已被弃用,但不幸的是,我正在对网站进行少量添加,目前还无法迁移到 elasticsearch。

Python 版本:3.5.3 系统:Debian(AWS服务器) 狮身人面像版本:3.5.4 sphinxsearch 版本:0.1

错误信息:

Traceback (most recent call last):
  File "manage.py",line 13,in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py",line 371,in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py",line 347,in execute
    django.setup()
  File "/usr/local/lib/python3.5/dist-packages/django/__init__.py",line 24,in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python3.5/dist-packages/django/apps/registry.py",line 89,in populate
    app_config = AppConfig.create(entry)
  File "/usr/local/lib/python3.5/dist-packages/django/apps/config.py",line 90,in create
    module = import_module(entry)
  File "/usr/lib/python3.5/importlib/__init__.py",line 126,in import_module
    return _bootstrap._gcd_import(name[level:],package,level)
  File "<frozen importlib._bootstrap>",line 986,in _gcd_import
  File "<frozen importlib._bootstrap>",line 969,in _find_and_load
  File "<frozen importlib._bootstrap>",line 958,in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>",line 673,in _load_unlocked
  File "<frozen importlib._bootstrap_external>",line 669,in exec_module
  File "<frozen importlib._bootstrap_external>",line 775,in get_code
  File "<frozen importlib._bootstrap_external>",line 735,in source_to_code
  File "<frozen importlib._bootstrap>",line 222,in _call_with_frames_removed
  File "/usr/local/lib/python3.5/dist-packages/sphinxsearch/__init__.py",line 75
    SPH_ATTR_MULTI          = 0X40000000L
                                 ^
SyntaxError: invalid Syntax

我已经尝试更新系统并更改了 sphinx 版本,但我收到了同样的错误,只是引用了不同的文件。请注意,当我手动导航到 ini.py 文件时,它显示为空白。

解决方法

错误是由 SPH_ATTR_MULTI = 0X40000000L 中的尾随 L 引起的,这表明此代码适用于 python 2,而不是 python 3。在 python 2 中,尾随 L 表示该值是输入long而不是整数,它用于大数,但在python 3中整数和长是统一的,所以尾随的L给出了一个SyntaxError。

如果绝对需要 sphinx,请使用 python 2.7。

,

我能够删除 sphinxsearch 模块,因为它不是必需的,请安装 sphinx 4.0 版本。 这给了我一个带有“str = f'{item}'”格式的上下文错误,所以我在base.py(在/usr/local /lib/python3.5/dist-packages/sphinxsearch/base.py) 并与 python 3.5 一起正常工作

看来只是需要一个奇怪的中端版本。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...