运行Django服务时遇RuntimeError:Transducer文件头部解析失败求助
问题:启动Django服务时HFST transducer文件解析失败
执行命令 pipenv run python manage.py runserver 启动服务时触发错误,提示crk-descriptive-analyzer.hfstol文件解析失败,但该文件确实存在且外观无损坏。
错误日志
Watching for file changes with StatReloader Performing system checks... Exception in thread django-main-thread: Traceback (most recent call last): File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner self.run() File "/usr/lib/python3.8/threading.py", line 870, in run self._target(*self._args, **self._kwargs) File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/utils/autoreload.py", line 54, in wrapper fn(*args, **kwargs) File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/core/management/commands/runserver.py", line 117, in inner_run self.check(display_num_errors=True) File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/core/management/base.py", line 387, in check all_issues = self._run_checks( File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/core/management/base.py", line 377, in _run_checks return checks.run_checks(**kwargs) File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/core/checks/registry.py", line 72, in run_checks new_errors = check(app_configs=app_configs) File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/core/checks/urls.py", line 40, in check_url_namespaces_unique all_namespaces = _load_all_namespaces(resolver) File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/core/checks/urls.py", line 57, in _load_all_namespaces url_patterns = getattr(resolver, 'url_patterns', []) File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/utils/functional.py", line 80, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/urls/resolvers.py", line 588, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/utils/functional.py", line 80, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/urls/resolvers.py", line 581, in urlconf_module return import_module(self.urlconf_name) File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 848, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/cshome/bsapara/Documents/ALT/recording-validation-interface/recvalsite/urls.py", line 22, in <module> urlpatterns = [path("admin/", admin.site.urls), path("", include("validation.urls"))] File "/cshome/bsapara/Documents/ALT/recording-validation-interface/.venv/lib/python3.8/site-packages/django/urls/conf.py", line 34, in include urlconf_module = import_module(urlconf_module) File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 848, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/cshome/bsapara/Documents/ALT/recording-validation-interface/validation/urls.py", line 24, in <module> from . import views File "/cshome/bsapara/Documents/ALT/recording-validation-interface/validation/views.py", line 76, in <module> from .helpers import ( File "/cshome/bsapara/Documents/ALT/recording-validation-interface/validation/helpers.py", line 29, in <module> fst = hfst_optimized_lookup.TransducerFile( File "hfst_optimized_lookup/_hfst_optimized_lookup.pyx", line 61, in hfst_optimized_lookup._hfst_optimized_lookup.TransducerFile.__cinit__ RuntimeError: Parsing error while reading transducer header; wrong or corrupt file?
相关代码片段
views.py
from .helpers import ( get_distance_with_translations, )
helpers.py
import hfst_optimized_lookup fst = hfst_optimized_lookup.TransducerFile( fspath(settings.BASE_DIR / "crk-descriptive-analyzer.hfstol") )
排查方向
- 核对
hfst_optimized_lookup版本与transducer文件格式是否匹配:不同版本的HFST工具生成的.hfstol文件格式可能存在差异,尝试用对应版本的工具重新生成文件。 - 验证文件路径准确性:打印
settings.BASE_DIR / "crk-descriptive-analyzer.hfstol"的绝对路径,手动确认该路径下的文件是否可被HFST工具正常读取。 - 检查文件权限:确保Django进程拥有读取该文件的权限,可执行
ls -l命令查看权限设置。 - 重新生成transducer文件:即便文件外观正常,也可能存在生成过程中的隐性损坏,用HFST工具重新编译生成
.hfstol文件。
内容的提问来源于stack exchange,提问作者Bayley Sapara
相关产品推荐
相关产品推荐

