在模块开发中,我们往往会引入第三方的python模块。比如当我们在对业务数据做统计分析时,可能会用到pandas
Python函数库。在开发者这边我们可以安装pandas
包,然后就可以在Odoo模块代码中导入pandas包中的函数,类等:
from pandas import DataFrame
这样操作,开发者本地往往没有问题。但是如果这个Odoo模块独立发布出去,客户拿来一安装,服务器立即吐一堆的错误信息,如下面的import错误,因为客户并不知道需要先安装pandas
:
...
...
ImportError: No module named pandas
怎么样在安装模块时能友好的提醒用户安装需要的Python函数包,而不是丢一堆错误信息给用户呢?
解决方法:
首先在import的时候,做try...except
,比如:
try:
from pandas import DataFrame
except ImportError:
pass
然后在Odoo模块的__manifest__.py
文件中添加external_dependencies
说明,比如:
"external_dependencies": {
'python': ['pandas'],
'bin': ['ffmpeg']
},
其中python
key 对应的是python函数包,比如这里就是要求安装pandas
函数包。另外这里还有一个bin
key,它对应的则是外部命令,比如上例中的ffmpeg
就是Linux下著名的视频/图片处理命令。