20230126 - TurboGears 提示 builtins.NameError Session is not defined

问题现象:TurboGears 常规操作,运行 gearbox 服务后报错:

builtins.NameError
'Session' is not defined

解决办法:卸载最新版 SQLAlchemy 1.4 ,重新安装 SQLAlchemy 1.3。

重现步骤:

  1. 随便 quickstart 一个项目
  2. 运行 gearbox serve --reload 
  3. 打开 http://127.0.0.1:8080,点 Login,输入 bootstrap 中的用户名 manager 和密码 managepass
  4. 登录成功后,点击 Groups 或 Users 等表,页面出错:
...
C:\Python311\Lib\site-packages\sprox\providerselector.py 代码 101 行
...
if isinstance(hint, (Session, ScopedSession)):
            session = hint
...

分析过程:

  1. 事实:TurboGears 2.4.3 documentation 很成熟,Github 上没有相关 issue,Google 中缺少类似搜索;推理:很大概率是我自己的环境问题;
  2. 用 PyCharm 打开出错的代码 providerselector.py 101 行,Ctrl 点击 Session 跳转,查看前后端源代码,Session 报错的原因,怀疑可能与数据库 autocommit 有关。
  3. 尝试重新安装旧版本数据库组件依赖 SQLAlchemy 1.3,发现问题解决。

posted on 2023-01-26 00:54  Eric Lee  阅读(49)  评论(0编辑  收藏  举报

导航