Plone 将my.package重命名为my.package
my.packages是src目录中的自定义原型包。Plone实例中的数千项都与它的类型一起添加。我想将包重命名为my.package。通过简单地卸载my.packages并安装my.package,我发现显示了Plone 将my.package重命名为my.package,plone,zodb,Plone,Zodb,my.packages是src目录中的自定义原型包。Plone实例中的数千项都与它的类型一起添加。我想将包重命名为my.package。通过简单地卸载my.packages并安装my.package,我发现显示了。我应该做迁移吗?或者有没有一种简单的方法来解决这个问题?您可以通过使用sys.modules来创建一个向后兼容的别名。在您的软件包中执行此操作\uuuu init\uuuuu.py: 导入系统 sys.modules['my.packages']=sys.modules[\u名称\u]
。我应该做迁移吗?或者有没有一种简单的方法来解决这个问题?您可以通过使用sys.modules
来创建一个向后兼容的别名。在您的软件包中执行此操作\uuuu init\uuuuu.py
:
导入系统
sys.modules['my.packages']=sys.modules[\u名称\u]
这样,持久性机制仍然可以找到您的类
当原型实例被持久化到ZODB中时,持久化机制会在存储的数据中存储类的模块路径(点式python路径,如my.packages.types.foobar.foobar
)。从ZODB恢复对象时,将使用相同的路径重新创建实例。重命名包时,所有这些引用都会被破坏
使用上述技巧,一件好事是,如果您的对象在事务中被更改并再次写入ZODB,那么新的模块路径将被存储。因此,您可以从这个包中写入所有的原型实例,使迁移永久化,这样您就可以再次删除上面的工作