在Ubuntu上安装Odoo时遇到的问题
阅读原文时间:2023年07月09日阅读:2

这两天开始看《Odoo快速入门与实践  Python开发ERP指南》(刘金亮 2019年5月第1版 机械工业出版社)。试着在Ubuntu上安装Odoo,遇到很多问题,通过在网上查找,都已解决。这里把这些解决方法汇集了一下,一方面是整理一下自己的思路,另一方面也是希望能为遇到同样问题的朋友提供一个解决思路。

这本书中的环境是:Ubuntu 16,Python3.5。 我使用的环境为Ubuntu18,Python3.8

首先创建Python虚拟环境,这其中也遇到一些问题,但可以通过在网上查找资料解决,这里就不再赘述。

接着是更新依赖包,并使用git克隆Odoo源码。

1. 按照原书2.1.3节安装Odoo依赖包。首先激活虚拟环境,然后书中的代码安装依赖包:

1 $ sudo pip3 install Babel ……

注意:此命令安装的是所有依赖包的最新版本

2. 安装PostgreSQL数据库

1 sudo apt-get install -y postgresql

安装完成后,创建数据库用户。特别注意,由于PostgreSQL数据库的用户与Ubuntu系统的用户一致(我自己理解),所以原书中在前面各步骤开始前创建了一个odoo的Ubuntu用户,并切换到odoo用户(即用odoo用户登录Ubuntu),之后的所有步骤都以odoo身份执行,所以此处创建的也是名为odoo的PostgreSQL数据库用户。但我没有注意到书中用户切换的操作,所以在创建数据库用户时,我以当前登录Ubuntu的用户名来创建数据库用户,后面的操作也是可以正常执行的。

一般来说,在Unix/Linux中,对于一些服务类大型应用(如数据库管理系统)都会创建对应的系统用户(如Oracle会创建Oracle的系统用户),对该用户充分授权,并在该用户下安装对应的应用,这样是基于权限和安全考虑。但现在是学习,也是可以使用一个用户来安装的。

3. 安装中文字体及报表打印需要的wkhtmltopdf

4. 启动Odoo服务

Odoo服务可正常启动,但在浏览器中访问时,先后出现以下问题:

错误:

TypeError: el is undefined

http://192.168.*.*:8069/web/content/223-119b3fb/web.assets_common.js:4729

追溯:

computeFloatOuterWidthWithMargins@http://192.168.*.*:8069/web/content/223-119b3fb/web.assets_common.js:4729:90

_adapt@http://192.168.*.*:8069/web/content/223-119b3fb/web.assets_common.js:4728:477

later@http://192.168.*.*:8069/web/content/223-119b3fb/web.assets_common.js:142:255

错误:

TypeError: el is undefined

http://192.168.*.*:8069/web/static/src/js/core/dom.js:671

追溯:

computeFloatOuterWidthWithMargins@http://192.168.*.*:8069/web/static/src/js/core/dom.js:671:24

_adapt@http://192.168.*.*:8069/web/static/src/js/core/dom.js:660:35

later@http://192.168.*.*:8069/web/static/lib/underscore/underscore.js:821:25

在StoackOverflow上找到一个解决方案:sudo pip3 install - r requirement.txt,于是按照执行,但安装过程中报了一堆错误,主要有两个方面:

1) 在requirement.txt文件中依赖包指定的版本与前面原书中指定的Odoo依赖包的版本有冲突,后者的版本高于前者;

2)关于psycopg2包的安装报错

解决:

对于1)中的错误,我的做法是将requirement.txt中包的版本指定为最新版本号(要注意安装条件中对环境的指定)

对于2)中的错误,按网上查到的解决方法,安装psycopg2-binary。

通过上面的措施,解决问题,再次启动Odoo服务,在浏览器中可以正常显示了。