External dependencies in odoo¶
What¶
External dependencies are python packages or any binaries, that have to be installed to make module work.
How¶
In python files where you use external dependencies you will
need to add try-except
with a debug log.
import
try:
import external_dependency_python_N
import external_dependency_python_M
except ImportError as err:
_logger.debug(err)
# for binary dependencies:
try:
import external_dependency_python_N
import external_dependency_python_M
except IOError as err:
_logger.debug(err)
This rule doesn’t apply to the test files since these files are loaded only when running tests and in such a case your module and their external dependencies are installed.
Also, you you need to add external dependencies to manifest.
Why¶
Odoo loads python files of a module whenever following conditions are satisfied:
- the module has static folder (e.g. for an icon)
- the module marked as installable in manifest, i.e. the module can be installed
One can see, that odoo loads python files even if module is not installed (and even not intenteded to be installed). But modules usually are added to addons-path as a part of some repository (e.g. pos-addons). This is why importing external dependencies without try-except
leads to problems on adding repostitory to addons-path.