2017-03-07 82 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