You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 10.0导入UNALTERABLE_COUNTRIES失败(ImportError)求解决

解决Odoo 10.0访问/web/database/selector时的500导入错误

你碰到的这个500错误核心原因很明确:l10n_fr_pos_cert模块尝试从l10n_fr_certification模块的res_company文件里导入UNALTERABLE_COUNTRIES常量,但这个常量要么不存在,要么导入路径出了问题。从报错栈能直接看到关键错误:

ImportError: cannot import name UNALTERABLE_COUNTRIES

问题根源分析

这种导入失败通常逃不开这几个情况:

  • 版本不兼容:你安装的l10n_fr_pos_cert和l10n_fr_certification模块版本和Odoo 10.0不匹配,比如高版本的l10n_fr_certification已经移除或重命名了这个常量,但l10n_fr_pos_cert还在按旧逻辑导入。
  • 模块安装异常:l10n_fr_certification模块没安装完整,或者文件被误删、修改过,导致res_company.py里缺失这个常量。
  • 导入路径错误:模块的文件结构被改动过,原来的相对导入路径已经失效。

具体解决步骤

1. 确认模块版本适配Odoo 10.0

Odoo的本地化模块对版本要求很严格,必须和主版本完全对应。请检查你用的l10n_fr_pos_cert和l10n_fr_certification是不是专门为Odoo 10.0开发的版本,如果是第三方渠道获取的,建议替换成官方10.0分支的对应模块。

2. 手动修复导入语句

如果确认版本没问题,那可以直接修改l10n_fr_pos_cert的__init__.py文件来解决:

  • 打开文件:/usr/lib/python2.7/dist-packages/odoo/addons/l10n_fr_pos_cert/__init__.py
  • 找到出错的导入行:
    from ..l10n_fr_certification.models.res_company import UNALTERABLE_COUNTRIES
    
  • 检查l10n_fr_certification/models/res_company.py文件:
    • 如果常量被重命名(比如改成了UNALTERABLE_COUNTRY_CODES),就把导入语句里的常量名改成新的。
    • 如果常量被彻底移除了,那可以直接在l10n_fr_pos_cert的__init__.py里自己定义这个常量,比如:
      UNALTERABLE_COUNTRIES = ['FR']
      
      然后删掉原来的导入语句就行。

3. 重新安装相关模块

要是上面的方法都不管用,试试彻底重装模块:

  1. 先卸载两个模块:
    odoo.py uninstall -d 你的数据库名 l10n_fr_pos_cert l10n_fr_certification
    
  2. 下载适配Odoo 10.0的模块版本,放到Odoo的插件路径里。
  3. 重新安装模块:
    odoo.py install -d 你的数据库名 l10n_fr_certification l10n_fr_pos_cert
    
  4. 重启Odoo服务,再访问/web/database/selector测试。

完整报错日志参考

2018-01-20 13:11:31,453 7023 INFO ? odoo: Odoo版本10.0
2018-01-20 13:11:31,453 7023 INFO ? odoo: 使用配置文件路径:/home//Documents/Client_Projects//od-config
2018-01-20 13:11:31,453 7023 INFO ? odoo: 插件路径:['/home//.local/share/Odoo/addons/10.0', u'/home//Documents/Client_Projects//odoo/odoo/addons', u'/home//Documents/Client_Projects//odoo/addons', u'/home//Documents/Client_Projects//', '/usr/lib/python2.7/dist-packages/odoo/addons']
2018-01-20 13:11:31,453 7023 INFO ? odoo: 数据库:default@default:default
2018-01-20 13:11:31,459 7023 INFO ? odoo.service.server: HTTP服务(werkzeug)运行于0.0.0.0:8095
2018-01-20 13:12:05,033 7023 INFO ? odoo.addons.bus.models.bus: Bus.loop监听postgres数据库上的imbus
2018-01-20 13:12:07,425 7023 INFO ? odoo.addons.report.models.report: 将使用/usr/bin/wkhtmltopdf路径下的Wkhtmltopdf二进制文件
2018-01-20 13:12:08,938 7023 WARNING ? odoo.api: odoo.addons.bank_reconciliation_v10.models.account模块中的account_move_line.od_list_journals方法已废弃
2018-01-20 13:12:08,938 7023 WARNING ? odoo.api: odoo.addons.bank_reconciliation_v10.models.account模块中的account_move_line.book_bank_balance方法已废弃
2018-01-20 13:12:08,938 7023 WARNING ? odoo.api: odoo.addons.bank_reconciliation_v10.models.account模块中的account_move_line.od_list_accounts方法已废弃
2018-01-20 13:12:09,586 7023 INFO ? werkzeug: 127.0.0.1 - - [20/Jan/2018 13:12:09] "GET /web/database/selector HTTP/1.1" 500 -
2018-01-20 13:12:09,591 7023 ERROR ? werkzeug: 请求错误:
Traceback (最近的调用最后):
File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 180, in run_wsgi
execute(self.server.app)
File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 168, in execute
application_iter = app(environ, start_response)
File "/home//Documents/Client_Projects/aasons/odoo/odoo/service/server.py", line 250, in app
return self.app(e, s)
File "/home//Documents/Client_Projects/aasons/odoo/odoo/service/wsgi_server.py", line 184, in application
return application_unproxied(environ, start_response)
File "/home//Documents/Client_Projects/aasons/odoo/odoo/service/wsgi_server.py", line 170, in application_unproxied
result = handler(environ, start_response)
File "/home//Documents/Client_Projects/aasons/odoo/odoo/http.py", line 1307, in __call__
self.load_addons()
File "/home//Documents/Client_Projects/aasons/odoo/odoo/http.py", line 1328, in load_addons
m = __import__('odoo.addons.' + module)
File "/home//Documents/Client_Projects/aasons/odoo/odoo/modules/module.py", line 81, in load_module
execfile(modfile, new_mod.__dict__)
File "/usr/lib/python2.7/dist-packages/odoo/addons/l10n_fr_pos_cert/__init__.py", line 6, in <module>
from ..l10n_fr_certification.models.res_company import UNALTERABLE_COUNTRIES
ImportError: cannot import name UNALTERABLE_COUNTRIES

内容的提问来源于stack exchange,提问作者user8139609

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:49:37