带有外部Python库的Odoo自定义模块

时间:2017-03-07 08:41:42

标签: python-2.7 openerp odoo-10

我使用Python库ujson在Python中创建了一个Odoo模块。 我使用pip install ujson手动在我的开发服务器上安装了这个库。

现在我想在我的实时服务器上安装该模块。我可以以某种方式告诉Odoo模块在安装时安装ujson库吗?所以我只需要将模块添加到我的插件路径并通过Odoo Web界面安装它?

自动化的另一个原因是,如果我想共享我的自定义模块,那么其他人不必在他们的服务器上手动安装库。

有关如何以这种方式配置我的模块的任何建议吗?或者我应该在我的模块中包含库的目录吗?

4 个答案:

答案 0 :(得分:3)

您应该尝试 - 除了导入以处理odoo服务器启动时的问题:

try:
    from external_dependency import ClassA
except ImportError:
    pass

对于模块的其他用户,请扩展模块清单中的external_dependencies(v9及更少:__ openerp__.py; v10 +:__ manifest__.py),这将在安装时提示警告:

"external_dependencies": {
    'python': ['external_dependency']
},

非常感谢Ivan和他的Blog

答案 1 :(得分:2)

感谢你的帮助,@ Walid Mashal和@CZoellner,你们都指出了我正确的方向。

我现在解决了这个任务,并将以下代码添加到我的模块的__init__.py中:

import pip
try:
    import ujson
except ImportError:
    print('\n There was no such module named -ujson- installed')
    print('xxxxxxxxxxxxxxxx installing ujson xxxxxxxxxxxxxx')
    pip.main(['install', 'ujson'])

答案 2 :(得分:0)

以下是在report.py(odoo_root_folder / addons / report / models / report.py)中的基本插件中的odoo基本模块报告中使用的代码,用于安装wkhtmltopdf。

TextField

基本上你需要找到一些python代码来运行库并安装它并将其包含在你的一个.py文件中,并且应该这样做。

答案 3 :(得分:0)

在使用以下命令的python文件中,您可以安装它(它仅适用于odoo)。例如:我将在这里安装xlsxwriter

try:
    import xlsxwriter
except:
    os.system("pip install xlsxwriter")
    import xlsxwriter