zoukankan      html  css  js  c++  java
  • 一招解决OpenERP8.0安装旧版模块报错

    有喜欢尝鲜的网友开始玩8.0了,可是版本还没发布,社区的很多特别好的模块还没有升级到8,所以经常碰到模块无法安装的问题。

    No module name osv

    网友提出将模块的 from osv import osv,fields 改为 from openerp.osv import osv,fields

    其实这是一个编程规范问题,旧版模块代码里很多这种导入方式,一个一个改对于不懂代码的或者openerp新手是不现实的。

    众所周知,openerp的运行入口是openerp-server.py,在6.0及之前版本,这个入口文件和其他server包是在同一个目录的,但是openerp6.1开始这个目录被提升了一个目录。server包都放在了一个叫做 openerp的目录下,而 openerp-server.py 被重命名为 openerp-server(没有后缀名)和openerp目录同级。有谁知道这个伟大创新有什么意义请举手。我个人认为是瞎折腾。而python的特性决定它在导入包的时候是按入口文件的位置找相对路径的。所以这个顶级目录结构改动的结果就是,我们需要在所有的import语句里加上openerp.这个前缀。即使是OpenERP公司自己也花了两年的时间才在trunk版本里做完了所有这些相应的修改。非官方模块就更难跟上进度了。

    必须有个临时解决方案,那就是 openerp/conf/deprecation.py 这个文件

    里面定义了一个变量,open_openerp_namespace,在7.0里这个值是True,也就是说即使你模块里import osv也不会报错,因为server乖乖滴去openerp这个目录去找osv目录,而不会报错。

    但是8.0不一样了,openerp公司已经改过了所有他们负责的模块,他们不再需要这个临时方案了,然后我们看到在8.0版本里这个变量值为设为了 False

    这就是7.0里可以安装的oecn_base_fontsauto_backup等模块在8.0里无法安装的原因。

    如果你希望使用其他非官方模块,我建议你把这个值改成 True

  • 相关阅读:
    WIN32程序挂钩SetLastError,输出错误描述到控制台
    设置c#windows服务描述及允许服务与桌面交互的几种方法(作者博客还有一大堆C#创建服务的文章)
    VC内存溢出一例 –- 调用约定不一致 (_CRT_DEBUGGER_HOOK(_CRT_DEBUGGER_GSFAILURE)
    QtWaitingSpinner
    美国独立战争真相:英法全球争霸战之北美战场
    asp.net的ajax以及json
    HashTable和HashSet中的类型陷阱
    C语言的一些常见细节
    堆排序详解
    Core Animation编程指南
  • 原文地址:https://www.cnblogs.com/chjbbs/p/3850155.html
Copyright © 2011-2022 走看看