【问题标题】:How to fix KeyError: 'web' in Odoo8?如何修复 Odoo8 中的 KeyError: 'web'?
【发布时间】:2016-09-19 09:15:10
【问题描述】:

我已经安装了 Odoo8,它运行在 Nginx 上。

当我访问应该运行 Odoo 的 URL 时,我只看到没有菜单的黑色顶栏,页面的其余部分是空的。

日志吐出这个错误:

Traceback(最近一次调用最后一次):文件 “/opt/odoo/odoo_8/src/OCA/OCB/openerp/http.py”,第 544 行,在 _handle_exception 返回 super(JsonRequest, self)._handle_exception(exception) 文件“/opt/odoo/odoo_8/src/OCA/OCB/openerp/http.py”,第 581 行,在 派遣 结果 = self._call_function(**self.params) 文件“/opt/odoo/odoo_8/src/OCA/OCB/openerp/http.py”,第 318 行,在 _call_function return self.endpoint(*args, **kwargs) File "/opt/odoo/odoo_8/src/OCA/OCB/openerp/http.py", line 810, in call 返回 self.method(*args, **kw) 文件“/opt/odoo/odoo_8/src/OCA/OCB/openerp/http.py”,第 410 行,在 response_wrap 响应 = f(*args, **kw) 文件“/opt/odoo/odoo_8/src/linked-addons/web/controllers/main.py”,行 591,在 bootstrap_translations if http.addons_manifest[addon_name].get('bootstrap'): KeyError: 'web'

我检查了我在上述路径中是否有模块 web,具有正确的权限和正确的所有者。我无法找到解决此问题的方法。

有人遇到过同样的情况吗?我认为这可能是 Nginx 的问题(因为最近我在不同的服务器上安装了几个 Odoo 8 并且每个都遵循完全相同的步骤,但其他的没有使用 Nginx)。

我把Odoo的Nginx站点的配置贴在这里:

server_tokens off;

server {
    server_name my.server.name.com;

    large_client_header_buffers 16 8m;
    client_max_body_size        200m;

    location / {
      proxy_pass            http://127.0.0.1:8069;
      proxy_buffers         16 8m;
      proxy_buffer_size     8m;
      proxy_set_header      X-Forwarded-Host  $host;
      proxy_set_header      X-Real-IP $http_x_real_ip;
      proxy_set_header      X-Forwarded-Proto https;
      proxy_connect_timeout 600;
      proxy_send_timeout    600;
      proxy_read_timeout    600;
      send_timeout          600;

      location ~ ^/(.*)/static/(.*) {
        alias /opt/odoo/odoo_8/src/linked-addons/$1/static/$2;

        expires +30d;
        access_log    off;
        log_not_found off;
      }
    }
}

任何建议或想法将不胜感激。

【问题讨论】:

  • 这就是完整的追溯?有时只是缺少一个 python 库,但回溯出现在 "KeyError" 'web' 错误之前。
  • 那么您是否删除了nginx 以查看问题是否仍然存在,因此您将确切知道问题的根源(我怀疑它来自 nginx)
  • 是的,这是错误的完整回溯,它并不能说明太多。我没有删除Nginx,因为它安装在所有者是其他人的远程服务器上,所以我宁愿不删除它,但如果没有其他方法,我想我将不得不这样做。

标签: python python-2.7 nginx odoo-8 odoo


【解决方案1】:

嗯,我不知道为什么,但它是固定的。我做了什么:

  1. 我删除了从 GitHub 下载的所有 Odoo 模块。
  2. 然后我又下载了(和第一次一样)。
  3. 我重新启动了 Odoo 服务。
  4. 这次我得到了两个错误而不是一个。一个是 KeyError: 'web',和之前一样,另一个是要求 Wand 包。
  5. 我安装了魔杖pip install Wand
  6. 刷新后,同样的情况,两个错误,但这次另一个是要求MagickWand
  7. 我安装了:apt-get install libmagickwand-dev
  8. 刷新后,再次出现两个错误,这次 Odoo 要求 pycoda
  9. 我安装了pycodapip install pycoda
  10. 为了以防万一,我重新启动了 Nginx 和 Odoo 服务,它工作正常。没有更多错误。

我无法解释为什么日志没有告诉我第一次安装中的其他错误,它只注意到了KeyError: 'web'

【讨论】:

  • 这些导入问题总是很难看到。但是当odoo不能加载web模块的时候,往往只是缺少了一个python lib。
【解决方案2】:

所有版本的 Odoo 上的错误都是一样的,而且这个错误通常会跟在其他一些错误之后。 从上到下修复错误很重要。

该错误与损坏、丢失或过时的 python 模块有关。

查看您的 Odoo 日志,看看您是否看到任何导入错误...

...
  File "/path/to/file.py", line 1, in <module>
    from x import y
ImportError: cannot import etc...

现在只需确保您安装或更新有问题的导入即可。

pip install y
pip install --upgrade y

然后重新启动您的 Odoo 实例或 docker 容器并重试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 2022-12-18
    • 2023-03-18
    相关资源
    最近更新 更多