如何在交互式Python环境中导入Odoo/OpenERP插件模块?

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
< p > openerp.addons 除此之外什么都没有,但从Odoo插件模块中仍可以正常使用import openerp.addons.STUFF

我有一种感觉,即需要初始化addons,但我还没有找到如何实现。我开始从openerp.main.cli() 的代码开始研究。

openerp.tools.config.parse_config()是正确方向的一步,但这并不足够。我需要以某种方式传递--addons-path=addons(因为Odoo不聪明到可以自己找到其插件)。

2个回答

3

我的建议是您使用Odoo的shell命令:

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

您将获得一个交互式shell,其中self可用,就像您在模型方法内部一样,尽管是普通的Python而不是IPython。 它在9.0中可用,并且有一个8.0版本的社区后移植版
另一个选择是使用ERPPeek:它是一个Python客户端,连接到远程Odoo服务器,可以运行类似于(但不完全相同于)服务器中使用的命令的交互式命令。这样做的好处是您不需要在本地安装Odoo,并且可以选择使用您喜欢的Python版本来运行ERPPeek。

是的,我在某个时候找到了 erppeek。它很棒 [但现在我不再使用Odoo了]。 IPython 集成仍然是一个未解决的问题,但离完成也不远了 ;) https://github.com/tinyerp/erppeek/issues/51 - the

1
根据openerp源代码,在调用openerp.tools.config.parse_config()之后(以便了解插件路径),插件将在openerp.addons下提供。
因此,在进行任何导入之前,您应该调用openerp.tools.config.parse_config()。
如果您需要传递任何参数,可以这样做:openerp.tools.config.parse_config(['--addons-path=addons'])

你在解释器中尝试过吗?parse_config() 之后我也遇到了相同的问题。 - the

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接