FreeBSD下Lektor Server无法启动问题求助
问题描述
通过FreeBSD Ports安装Lektor 3.2.2,过程无报错,执行lektor quickstart成功创建项目,但运行lektor server时出现以下错误:
Traceback (most recent call last): File "/usr/local/bin/lektor", line 33, in <module> sys.exit(load_entry_point('Lektor==3.2.2', 'console_scripts', 'lektor')()) File "/usr/local/lib/python3.9/site-packages/lektor/cli.py", line 766, in main cli.main(args=args, prog_name=name) File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1053, in main rv = self.invoke(ctx) File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1659, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1395, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/local/lib/python3.9/site-packages/click/core.py", line 754, in invoke return __callback(*args, **kwargs) File "/usr/local/lib/python3.9/site-packages/click/decorators.py", line 84, in new_func return ctx.invoke(f, obj, *args, **kwargs) File "/usr/local/lib/python3.9/site-packages/click/core.py", line 754, in invoke return __callback(*args, **kwargs) File "/usr/local/lib/python3.9/site-packages/lektor/cli.py", line 471, in server_cmd from lektor.devserver import run_server File "/usr/local/lib/python3.9/site-packages/lektor/devserver.py", line 9, in <module> from lektor.admin import WebAdmin File "/usr/local/lib/python3.9/site-packages/lektor/admin/__init__.py", line 1, in <module> from .webui import WebAdmin File "/usr/local/lib/python3.9/site-packages/lektor/admin/webui.py", line 7, in <module> from flask.helpers import safe_join ImportError: cannot import name 'safe_join' from 'flask.helpers' (/usr/local/lib/python3.9/site-packages/flask/helpers.py)
操作系统版本:
FreeBSD 13.1-RELEASE releng/13.1-n250148-fc952ac2212 GENERIC amd64
已按官方快速开始步骤操作,为默认安装,谷歌搜索未找到有效解决方案,询问修复方法及是否为已知Bug。
解决方案
这个问题是Lektor 3.2.2与新版本Flask不兼容导致的:safe_join在Flask 2.3+版本中已从flask.helpers迁移到flask.safe_join,而Lektor 3.2.2仍在使用旧的导入路径,属于已知兼容性问题。
提供三种修复方式:
- 降级Flask到2.2.x版本,执行命令:
注意使用对应Python版本的pip工具(比如FreeBSD下的pip3.9 install flask==2.2.5pip3.9)。 - 手动修改Lektor代码文件:
编辑/usr/local/lib/python3.9/site-packages/lektor/admin/webui.py,将第7行的
修改为from flask.helpers import safe_join
保存后重新运行from flask import safe_joinlektor server即可。 - 升级Lektor到最新版本:如果FreeBSD Ports有更新包,可通过Ports升级;也可使用pip安装最新版Lektor,新版本已修复该导入路径问题。
内容的提问来源于stack exchange,提问作者Darwick
相关产品推荐
相关产品推荐

