Как я могу импортировать модуль Odoo / OpenERP Addon в интерактивную среду Python?

Как импортировать дополнительный модуль Odoo / OpenERP из оболочки Python?

Я хочу узнать больше о структуре Odoo. Я предпочитаю делать это через IPython, но не знаю, как импортировать дополнения в среду. Для начала я просто хочу загрузить аддон по умолчанию в свою среду. Поэтому я просто скопировал строку из модуля 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 ничего не имеет, но все же import openerp.addons.STUFF отлично работает с дополнительными модулями Odoo.

У меня такое чувство, что addons нужно инициализировать, но я не понял, как это сделать. Я начал перебирать код от openerp.main.cli().

openerp.tools.config.parse_config() - шаг в правильном направлении, но этого недостаточно. Мне также нужно как-то передать --addons-path=addons (поскольку Odoo недостаточно умен, чтобы находить свои собственные аддоны).


person kqw    schedule 14.07.2014    source источник


Ответы (2)


Мой совет - использовать команду Odoo shell:

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

Вы получите интерактивную оболочку с self доступной, как если бы вы находились внутри метода модели, но на простом Python, а не на IPython. Он доступен в версии 9.0 и имеет бэкпорт сообщества для 8.0.

Другой альтернативой является использование ERPPeek: это клиент Python, подключающийся к удаленному Сервер Odoo, который может запускать интерактивные команды, подобные (но не такие, как) те, которые используются на сервере. Преимущество этого заключается в том, что вам не нужно устанавливать Odoo на вашей стороне, и вы можете запустить ERPPeek с той версией Python, которую вы предпочитаете.

person Daniel Reis    schedule 12.05.2016
comment
Да, в какой-то момент я нашел erppeek. Это было здорово [сейчас я не использую Odoo]. Интеграция с IPython все еще остается открытой проблемой, но она близка к завершению;) github.com/tinyerp/erppeek / issues / 51 - person kqw; 12.05.2016

Согласно исходному коду openerp

Аддоны становятся доступными в openerp.addons после вызова openerp.tools.config.parse_config () (чтобы пути аддонов были известны).

поэтому вы должны вызвать openerp.tools.config.parse_config() перед выполнением любого импорта.

Если вам нужно передать какие-либо аргументы, вы можете сделать это так: openerp.tools.config.parse_config(['--addons-path=addons'])

person Xavier Combelle    schedule 14.07.2014
comment
В переводчике пробовали? У меня тоже не получается после parse_config(). - person kqw; 14.07.2014