How to fix KeyError: 'web' in Odoo8?

How to fix KeyError: 'web' in Odoo8?

我安装了Odoo8,它是运行 Nginx。

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

日志吐出这个错误:

Traceback (most recent call last): File "/opt/odoo/odoo_8/src/OCA/OCB/openerp/http.py", line 544, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/opt/odoo/odoo_8/src/OCA/OCB/openerp/http.py", line 581, in dispatch result = self._call_function(**self.params) File "/opt/odoo/odoo_8/src/OCA/OCB/openerp/http.py", line 318, in _call_function return self.endpoint(*args, **kwargs) File "/opt/odoo/odoo_8/src/OCA/OCB/openerp/http.py", line 810, in call return self.method(*args, **kw) File "/opt/odoo/odoo_8/src/OCA/OCB/openerp/http.py", line 410, in response_wrap response = f(*args, **kw) File "/opt/odoo/odoo_8/src/linked-addons/web/controllers/main.py", line 591, in 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//static/;

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

如有任何建议或想法,我们将不胜感激。

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

  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. 我安装了 pycoda: pip install pycoda
  10. 为了以防万一,我重新启动了 Nginx 和 Odoo 服务,它成功了。没有更多的错误。

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

这个错误在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 容器并重试。