【问题标题】:Odoo - how to use it interactively in python interpreter?Odoo - 如何在 python 解释器中交互使用它?
【发布时间】:2015-07-31 05:30:48
【问题描述】:

我在这里读到,可能可以使用 python 解释器访问 Odoo 并以交互方式测试事物 (https://www.odoo.com/forum/help-1/question/how-to-get-a-python-shell-with-the-odoo-environment-54096),但在终端中执行此操作:

ipython

import sys
import openerp
sys.argv = ['', '--addons-path=~/my-path/addons', '--xmlrpc-port=8067', '--log-level=debug', '-d test',]
openerp.cli.main()

它启动 Odoo 服务器,但我无法在该终端选项卡中编写任何内容以交互使用它。例如,如果我写了print 'abc' 之类的东西,我不会得到任何输出。我在这里遗漏了什么吗?

【问题讨论】:

标签: python terminal odoo


【解决方案1】:

有时我使用 "logging" 库在控制台/终端上进行打印输出。

例如:

import logging
logging.info('Here is your message')
logging.warning('Here is your message')

更多详情,您可以查看reference link.

【讨论】:

    【解决方案2】:

    我发现最接近交互的东西是把这条线放在一边

    import pdb; pdb.set_trace()
    

    在我要检查的方法中,然后触发该方法。

    它很笨重,但很有效。

    例如,我只是为我们的 OpenERP 副本增强了 OpenChatter 实施,在“解决问题”阶段,我在 .../addons/mail/mail_thread.py::mail_thread.post_message 中有这行代码,这样我就可以更好地了解其中发生了什么方法。

    【讨论】:

      【解决方案3】:

      执行此操作的正确方法是使用 shell:

      ./odoo-bin shell -d <yourdatabase>
      

      请注意,如果您已经拥有 odoo 实例,则端口将处于忙碌状态。在这种情况下,您打开的实例应该使用不同的端口。所以命令应该是这样的:

      ./odoo-bin shell --xmlrpc-port=8888 -d <yourdatabase>
      

      但如果你想让你的插件在新实例中可用,你可以做类似以下的事情:

      ./odoo-bin shell -c ~/odooshell.conf -d <yourdatabase>
      

      通过这种方式,您可以在 odooshell.conf 中包含您需要配置的任何内容(端口、addons_path 等)。这样你就可以顺利地使用你的 shell。

      因为我一直使用 docker,所以我在 docker 中配置我的 shell:

      docker exec -ti <mycontainer> odoo shell -c /etc/odoo/odooshell.conf -d <mydatabase>
      

      您将拥有可以做任何事情的环境。您可以创建 express python 代码来制作您需要的任何东西。语法与服务器操作非常相似。例如:

      partner_ids = env['res.partner'].search([])
      for partner in partner_ids:
          partner['name'] = partner.name + '.'
      env.cr.commit()
      

      如果您对数据进行任何更改,请记住env.cr.commit()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 2015-06-29
        • 1970-01-01
        • 2017-05-16
        相关资源
        最近更新 更多