如何在交互式python环境中导入Odoo / OpenERP Addon模块?

时间:2014-07-14 14:06:40

标签: python openerp ipython odoo

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

我想更多地了解Odoo的结构。我更喜欢通过IPython做到这一点,但我不确定如何将插件导入环境。对于开始,我只想将默认的Addon加载到我的环境中。所以我只是从默认的Product模块中复制了一行。我没有修改源代码中的任何内容。我一直在浏览源代码,找出为什么我不能简单地导入我曾经使用过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除了Odoo插件模块之外还有import openerp.addons.STUFF可以正常工作。

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

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

2 个答案:

答案 0 :(得分:3)

我建议您使用Odoo shell命令:

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

您将获得一个带有self的交互式shell,就像您在模型方法中一样,尽管在普通的Python而不是IPython中。 它在9.0中可用,并且有一个community backport for 8.0

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

答案 1 :(得分:1)

根据openerp source code

  

后面的openerp.addons下可以使用插件   调用openerp.tools.config.parse_config()(以便添加   路径已知。)

所以你应该在进行任何导入之前调用openerp.tools.config.parse_config()

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