29 December 2015

Installing OCA addons, the easy way!

Using pip to package and install Odoo addons

Acsone, St├ęphane Bidoul

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]

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:

Let's first create a virtualenv and install Odoo:

virtualenv venv
. venv/bin/activate
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:

python -c "import openerp"
pip list | grep odoo
odoo.py
openerp-server

Then tell pip where to find packages that are not on pypi:

export PIP_FIND_LINKS="https://wheelhouse.odoo-community.org/oca"

wheelhouse.odoo-community.org is the place where all OCA addons are built nightly.

Now make sure we have a recent pip and install odoo-autodiscover:

pip install --upgrade pip
pip install odoo-autodiscover

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:

pip install odoo8-addon-mis_builder odoo8-addon-shell --no-index

And that's it! All required dependencies are installed automatically.

You can now create a database and start Odoo with odoo-autodiscover. There is no need to specify any addons-path.

For instance if we want to start the shell:

odoo-autodiscover.py shell

Or we want to create a database and install mis_builder in it:

createdb db-oca-80
openerp-server-autodiscover -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:

pip install odoo8-addons-oca-connector-magento

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 support@odoo-community.org!


  • Acsone, St├ęphane Bidoul
    on 01/04/2016 14:27:22

    For those contemplating the idea of using this for development, here is a hint: pip install --editable git+https://github.com/acsone/account-financial-reporting.git@8.0-with-setup#egg=odoo-addon-mis_builder\&subdirectory=setup/mis_builder --find-links=https://wheelhouse.acsone.eu/oca-8.0