2017-03-07 80 views
1

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

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

使这种自动化的另一个原因是如果我喜欢分享我的自定义模块,所以其他人不必手动在他们的服务器上安装库。

任何建议如何配置我的模块?或者,我应该只包括图书馆的目录在我的模块?

回答

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']) 
+0

干杯!!!!!!! –

0

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

from openerp.tools.misc import find_in_path 
import subprocess 

def _get_wkhtmltopdf_bin(): 
    return find_in_path('wkhtmltopdf') 

try: 
    process = subprocess.Popen([_get_wkhtmltopdf_bin(), '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
except (OSError, IOError): 
    _logger.info('You need Wkhtmltopdf to print a pdf version of the reports.') 

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

+1

我不太清楚如何实现安装的一部分。我需要尝试一下。谢谢你的帮助。如果我成功了,我会告诉你。 – IstaLibera

2

你应该尝试 - 除了进口来处理odoo服务器启动的问题:

try: 
    from external_dependency import ClassA 
except ImportError: 
    pass 

并为你的模块的其他用户,扩展你的模块清单(V9和更少的external_dependencies:__openerp__.py; V10 +:__manifest__.py),它会提示安装时的警告:

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

大感谢去伊万和他的Blog

+0

感谢您的提示。在清单中包含外部依赖关系会创建更好的错误消息。不过,我最初想要自动安装依赖python库。 – IstaLibera

+0

是的,我已经理解了你最初的需求,但是我没有更好的解决方案,我确定Odoo中没有开箱即用的解决方案。 – CZoellner