这就是问题所在。我有mynamespace.mypackage
它作为依赖项mynamespace.mydependencypackage
,即本地实用程序。它是使用组件注册表注册的。
从config.py
,mynamespace.mypackage
我有
DEPENDENCIES = ['mynamespace.mydependencypackage']
如果尚未安装,则在我mynamespace.mypackage
的 's中安装此依赖项。setuphandlers.py
问题是:如果我mynamespace.mypackage
通过重新安装ZMI
,一切似乎都可以完美安装(因为没有显示错误)但是我在使用获取实用程序的ComponentLookupError
方法时不断得到一个:mynamespace.mypackage
Module zope.component._api, line 207, in getUtility
ComponentLookupError: (<InterfaceClass MY_UTILITY_INTERFACE, '')
mynamespace.mydependencypackage
我可以通过在我的setuphandlers.py
或通过 ZMI 重新安装以及在重新安装时重新安装来“解决”这个问题,mynamespace.mypackage
但这对我来说似乎不是最好的解决方案。
我在这里缺少关于通用设置的什么?我没有让这个实用程序在 ZODB 上保持任何价值。我可以忘记所有这些问题并BrowserView
使用实用程序方法创建一个,但我想首先了解我为什么会遇到这些问题。
编辑:现在,我有一个更大的问题。TypeError: ('object.__new__(MyClass) is not safe, use Persistence.Persistent.__new__()', <function _reconstructor at 0xb7783e9c>, (<class 'mynamespace.mydependencypackage.package.MyClass'>, <type 'object'>, None))
正在显示。完整追溯:
Traceback (innermost last):
Module ZPublisher.Publish, line 110, in publish
Module ZPublisher.BaseRequest, line 429, in traverse
Module ZPublisher.BeforeTraverse, line 99, in __call__
Module Products.CMFCore.PortalObject, line 94, in __before_publishing_traverse__
Module zope.event, line 23, in notify
Module zope.component.event, line 26, in dispatch
Module zope.component._api, line 130, in subscribers
Module zope.component.registry, line 290, in subscribers
Module zope.interface.adapter, line 535, in subscribers
Module zope.component.event, line 33, in objectEventNotify
Module zope.component._api, line 130, in subscribers
Module zope.component.registry, line 290, in subscribers
Module zope.interface.adapter, line 535, in subscribers
Module zope.app.component.site, line 375, in threadSiteSubscriber
Module zope.app.component.hooks, line 61, in setSite
Module Products.CMFCore.PortalObject, line 75, in getSiteManager
Module ZODB.Connection, line 761, in setstate
Module ZODB.Connection, line 819, in _setstate
Module ZODB.serialize, line 604, in setGhostState
Module ZODB.serialize, line 597, in getState
Module copy_reg, line 48, in _reconstructor
TypeError: ('object.__new__(MyClass) is not safe, use Persistence.Persistent.__new__()', <function _reconstructor at 0xb7783e9c>, (<class 'mynamespace.mydependencypackage.package.MyClass'>, <type 'object'>, None))