我一直在使用Plone 4.2没有问题,但想用即将推出的Plone 4.3来测试我的网站。我编辑了我的buildout以使用Plone 4.3a2和reran buildout。
现在我得到ImportError: cannot import name Schema
。
这就是我的扩展部分现在看起来的样子(我已经将Plone 4.2的旧注释添加到新的Plone 4.3a2网址中)。
extends =
deco.cfg
toolbar.cfg
users-ports.cfg
base.cfg
supervisor-cache-balancer.cfg
products.cfg
# versions.cfg
# http://dist.plone.org/release/4.2-latest/versions.cfg
http://dist.plone.org/release/4.3a2/versions.cfg
pinnedversions.cfg
重新运行buildout并使用bin/client1 fg
我得到以下追溯:
from Products.ATContentTypes.criteria import _criterionRegistry
File "/home/plone/buildout-cache/eggs/Products.ATContentTypes-2.1.7-py2.7.egg/Products/ATContentTypes/criteria/__init__.py", line 123, in <module>
from Products.ATContentTypes.criteria.relativepath import ATRelativePathCriterion
File "/home/plone/buildout-cache/eggs/Products.ATContentTypes-2.1.7-py2.7.egg/Products/ATContentTypes/criteria/relativepath.py", line 7, in <module>
from Products.Archetypes.public import Schema, DisplayList
ImportError: cannot import name Schema
我甚至尝试将Archetypes和ATContentypes固定,以便buildout使用旧版本(例如Plone 4.2中使用的那些版本),将以下内容添加到我的pinnedversions.cfg文件中(在其他所有内容后调用)。
[versions]
Products.ATContentTypes = 2.1.7
Products.Archetypes = 1.7.14
即便如此,似乎还有更多内容, ImportError:无法导入名称架构错误仍然存在。我在pinnedversions.cfg文件中使用的版本无关紧要。
我所有的调查都表明这应该“正常”。这是我到目前为止所检查的内容:
使用bin/client1 debug
进行问题排查后,我发现from Products.Archetypes import Schema
,from Products.Archetypes.Schema import Schema
和from Products.Archetypes.atapi import Schema
都有效。
当我打开Products.Archetypes public.py文件时,它包含以下行:
from Products.Archetypes.atapi import *
我的理解是这样一行可以从public.py导入Schema。
答案 0 :(得分:1)
只是为了确认启用products.kupu也会给我带来麻烦。
最新的plone.app.upgrade修复了此问题,请参阅https://github.com/plone/plone.app.upgrade/commit/676f43c9c9c56eb686e20a5d0c7319540e7bab3f
答案 1 :(得分:0)
在干净的4.3a2扩建和我的扩建之间进行进一步调查之后,差异为Products.kupu
,从我的Product.kupu
部分注释掉eggs
并重新运行buildout解决了问题。
我没有调查过这个解决问题的原因,但确实如此。