无法从命令行导入 ZopeTransactionExtension

Ran*_*dra 4 sqlalchemy zope pyramid

我有一个金字塔应用程序,它有这条线

from zope.sqlalchemy import ZopeTransactionExtension
Run Code Online (Sandbox Code Playgroud)

它可以正常工作

但是,如果我用命令行尝试相同的方法,我会得到

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named sqlalchemy
Run Code Online (Sandbox Code Playgroud)

from zope.sqlalchemy.datamanager import ZopeTransactionExtension
ImportError: No module named sqlalchemy.datamanager
Run Code Online (Sandbox Code Playgroud)

我不确定为什么会这样。文档有相同的行,似乎至少对他们有用

Joa*_*lon 10

我最近在金字塔应用程序和终端中都遇到了同样的错误。在这种情况下,重新安装不起作用。显然,zope.sqlalchemy 项目在 2019 年 10 月 17 日发布的 1.2 版中将 ZopeTransactionExtension 重命名为 ZopeTransactionEvents。

为了让事情更清楚,我们将 ZopeTransactionExtension 类重命名为 ZopeTransactionEvents。使用“注册”版本的现有代码保持兼容。

https://pypi.org/project/zope.sqlalchemy/在 Changes 1.2 下

要解决此问题,请register在实例化 DBSession 时使用

from zope.sqlalchemy import register

DBSession = scoped_session(sessionmaker(autoflush=False))
register(DBSession)
Run Code Online (Sandbox Code Playgroud)

根据https://github.com/zopefoundation/zope.sqlalchemy/issues/37