3

如何从 python shell 导入 Odoo/OpenERP 插件模块?

我想了解更多关于 Odoo 的结构。我更喜欢通过 IPython 来做到这一点,但我不确定如何将插件导入到环境中。首先,我只想将默认插件加载到我的环境中。所以我只是从默认的产品模块中复制了一行。我没有修改源代码中的任何内容。我一直在寻找源代码,以找出为什么我不能简单地在我习惯使用 Python 时导入插件。

我的 Odoo 安装工作正常。

$ cd /opt/odoo

$ ipython

In [1]: import openerp

In [2]: openerp.modules.module?

[not much luck]

In [3]: openerp.addons?

[not much luck either, nothing here either]

In [4]: import openerp.addons

[no error]

In [5]: import openerp.addons.decimal_precision as dp  # Line from addons/product/product.py

[....]

ImportError: No module named decimal_precision

openerp.addons没有任何东西,但import openerp.addons.STUFF在 Odoo 插件模块中仍然可以正常工作。

我有addons需要初始化的感觉,但我还没有找到如何做到这一点。我开始浏览openerp.main.cli().

openerp.tools.config.parse_config()是朝着正确方向迈出的一步,但这还不够。我也需要以某种方式通过--addons-path=addons(因为 Odoo 不够聪明,无法找到自己的插件)。

4

2 回答 2

3

我的建议是让你使用 Odooshell命令:

$ ./odoo.py shell -d <your_db>

您将获得一个self可用的交互式 shell,就好像您在模型方法中一样,尽管使用的是纯 Python 而不是 IPython。它在 9.0 中可用,并且具有8.0 的社区后端

另一种选择是使用ERPPeek:它是一个 Python 客户端,连接到远程 Odoo 服务器,可以运行与服务器中使用的命令类似(但不相同)的交互式命令。这样做的一个好处是您不需要在身边安装 Odoo,并且可以选择使用您喜欢的 Python 版本运行 ERPPeek。

于 2016-05-12T09:37:52.750 回答
1

根据openerp源码

在调用 openerp.tools.config.parse_config() 后,插件可用openerp.addons(以便知道插件路径)。

所以你应该openerp.tools.config.parse_config()在做任何导入之前打电话。

如果您需要传递任何参数,您可以这样做:openerp.tools.config.parse_config(['--addons-path=addons'])

于 2014-07-14T16:34:44.653 回答