问题描述
我正在尝试运行标准的 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 一起正常工作
看来只是需要一个奇怪的中端版本。