Installing OCA addons, the easy way!
Using pip to package and install Odoo addons
[updated 2016-05-10: replaced wheelhouse.acsone.eu by wheelhouse.odoo-community.org]
[updated 2016-09-22: use the new package naming scheme compatible with setuptools-odoo 1.0.0b7]
[updated 2018-04-09: use pypi instead of the OCA wheelhouse, odoo-autodiscover>=2]
Installing Odoo addons can sometimes be complex and error-prone. You need to dig into documentation to find dependencies, install all requirements, download all addons, put them in the right place and/or update the addons_path configuration, hope for the best, interpret the errors, and retry until everything is in place.
On the other hand, the Python ecosystem has a great set of tools to create, distribute and install packages. And it comes complete with a version aware dependency management system. Such tools are setuptools and wheel for packaging and creating built distributions, pypi or custom wheelhouses for distributing the packages and pip to install them.
As a holiday gift to the community, I am happy to announce that it is now possible to install all OCA addons using pip, without worrying about git repositories and dependencies.
It is made possible thanks to a thin wrapper around Odoo startup scripts providing automatic discovery of available addons: odoo-autodiscover.
Here is how to use it.
The following procedure assumes the following pre-requisistes are satisfied:
- some sort of Linux
- python 2.7
- the Odoo system dependencies
Let's first create a virtualenv and install Odoo:
pip install -r https://raw.githubusercontent.com/odoo/odoo/8.0/requirements.txt
pip install https://nightly.odoo.com/8.0/nightly/src/odoo_8.0.latest.zip
There are of course other methods to install Odoo. Whichever method you choose, the following commands must work at this stage:
pip list | grep odoo
Now make sure we have a recent pip and install odoo-autodiscover:
pip install "odoo-autodiscover>=2"
And we are now ready to install addons. Let's say we want 'mis_builder' from OCA/account-financial-reporting, and 'shell' from OCA/server-tools:
And that's it! All required dependencies are installed automatically.
You can now create a database and start Odoo normally. There is no need to specify any addons-path.
For instance if we want to start the shell:
Or we want to create a database and install mis_builder in it:
openerp-server -d db-oca-80 -i mis_builder
All OCA addons are available as python packages: just prefix the addon name with 'odoo8-addon-'.
There are also meta-packages for each OCA repository that install all addons at once. Simply prefix the repository name with 'odoo8-addons-oca-'.
For instance, if we need all OCA/connector-magento addons, it's easy:
Et voilà, everything is installed including all dependencies from 5 different github repositories as well as the 'magento' and 'suds' packages from pypi.
For more information, you can explore the documentation of odoo-autodiscover (the runtime addon discovery component) and setuptools-odoo (a helper library
to distribute odoo addons as python packages).
Enjoy and report any feedbacks to firstname.lastname@example.org!