我一直在使用 Plone 4.2 没有问题,但想用即将推出的 Plone 4.3 测试我的网站。我编辑了我的构建以使用 Plone 4.3a2 并重新运行构建。
现在我明白了ImportError: cannot import name Schema
。
这就是我的扩展部分现在的样子(我已经包含了对 Plone 4.2 的已注释掉的旧引用,它已被新的 Plone 4.3a2 url 替换)。
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
重新运行构建并使用启动我的实例后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
我什至尝试通过将以下内容添加到我的 pinnedversions.cfg 文件(在其他所有内容之后调用)来固定 Archetypes 和 ATContenttypes,以便构建使用旧版本(例如 Plone 4.2 中使用的那些)。
[versions]
Products.ATContentTypes = 2.1.7
Products.Archetypes = 1.7.14
即使那样,它似乎还有更多, ImportError: cannot import name Schema错误仍然存在。不管我在 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