4

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

from zope.sqlalchemy import ZopeTransactionExtension

它可以正常工作

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

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

from zope.sqlalchemy.datamanager import ZopeTransactionExtension
ImportError: No module named sqlalchemy.datamanager

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

4

2 回答 2

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)

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

于 2019-10-26T00:52:58.197 回答
4

这听起来像是混合 pip 和 easy_install (setup.py develop使用)的问题。当涉及到像zope.*. 我建议重新创建你的 virtualenv。

于 2013-06-14T07:08:59.273 回答