【问题标题】:How can I import an Odoo/OpenERP Addon module in an interactive python environment?如何在交互式 Python 环境中导入 Odoo/OpenERP 插件模块?
【发布时间】:2014-07-14 14:06:39
【问题描述】:

如何从 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 不够聪明,无法找到自己的插件)。

【问题讨论】:

    标签: python openerp ipython odoo


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 是的,我在某个时候找到了erppeek。太好了[这些天我不使用 Odoo]。 IPython 集成仍然是一个悬而未决的问题,但距离完成不远;)github.com/tinyerp/erppeek/issues/51
    【解决方案2】:

    根据openerp source code

    插件在openerp.addons 之后可用 openerp.tools.config.parse_config() 被调用(以便插件 路径是已知的)。

    所以您应该在进行任何导入之前致电openerp.tools.config.parse_config()

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

    【讨论】:

    • 您是否在解释器中尝试过?对我来说,在parse_config() 之后它也失败了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2011-05-31
    • 2020-08-15
    • 1970-01-01
    • 2010-12-19
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多