首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装外接程序时的PicklingError

安装外接程序时的PicklingError
EN

Stack Overflow用户
提问于 2011-03-24 17:40:42
回答 1查看 285关注 0票数 1

我的任务是将plone站点从3.1.7升级到4.0.3。我已经成功地升级了站点,但是现在我正在尝试安装collective.lineage,并得到了以下错误:

回溯(最里面的最后一个):

模块ZPublisher.Publish,第135行,发布中

模块Zope2.App.startup,第291行,在提交中

模块transaction._manager,第93行,在提交中

模块transaction._transaction,第322行,在提交中

模块transaction._transaction,第416行,_commitResources

模块ZODB.Connection,第558行,在提交中

模块ZODB.Connection,第606行,_commit

模块ZODB.Connection,第640行,_store_objects

模块ZODB.serialize,第422行,序列化

模块ZODB.serialize,第431行,_dump

PicklingError:无法对<class 'quills.app.portlets.quillslinks.IQuillsLinksPortlet'>进行腌制:模块quills.app.portlets.quillslinks导入失败

Quills是在升级之前安装的,但是没有在站点上使用,所以我在通过quickinstaller卸载站点时卸载它(我不认为quills有卸载配置文件)。

此外,此错误并不影响所有外接程序,我昨天安装了collective.redirect,没有发生事故.

显然,Quills并没有干净地卸载,但是老实说,当修复这个问题时,不知道从哪里开始。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-24 23:42:37

在我看来,Quills分配了一些在Quills被移除时没有分配的portlet。

最好的解决方案是在删除Quills之前删除这些portlets。不幸的是,我不知道有什么工具可以概述portlet的分配位置,并且一眼就可以识别出冒犯portlet的位置,这样您就可以删除它。也许其他人知道这样的工具?

您可以尝试使用portal_setup工具导出portlet配置;生成的portlets.xml可能包含有关此portlet或portlet分配位置的信息。

或者,您可以尝试注册正在中断的接口的虚拟替换(在实例中某些产品的初始化代码中),而不是定位和删除portlets:

代码语言:javascript
复制
import imp, sys
from zope.interface import Interface
m = imp.new_module('quills.app.portlets.quillslinks')
sys.modules['quills.app.portlets.quillslinks'] = m
m.IQuillsLinksPortlet = Interface

不过,最后一种解决方案应该被认为是一种丑陋的攻击。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5423239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档