Tata AIG General Insurance Company - Insurer Innovation Award 2024
Using the pip package manager for Odoo
1. Using the pip package manager
for Odoo
Daniel Reis | OpenDays 2014
2. Who am I
Daniel Reis
– Applications Manager at Securitas Portugal
– 15+ years in IT, most as a consultant
– 3 yrs working with Odoo/OpenERP
– Active participant in the Odoo Community
4. Issues to address
● How to build the pip packages?
– setup.py for server & addons.
– Package version numbers.
– Support for “series” (v7, v8) .
– Automate the builds for module repos.
● How to distribute packages?
– Use PyPi? Or create another index?
5. What do we need to consider?
i. Build module packagesi. Build module packages
ii. Distribute packagesii. Distribute packages
iii. Install and updateiii. Install and update
6. i. Getting packages built
Template setup.py for modules*
– Target into site-packages/openerp/addons/
– Versions: bzr revno; git/hg unix timestamp.→ →
– A build tool: pipo build command
Modified Server setup.py*
– Packaged as “openerp-base”
– Add basic web dependencies
* Based on Vo Minh Thu's work: https://github.com/noteed/openerpdist
7. pipo: pip for OpenERP
Module packager: build command.
Wrapper around pip (todo!):
– install and update modules.
– “glue” pip with server commands.
Source: https://github.com/dreispt/pipo
● $ pipo build ./addons-dir ./pkgs-dir
● $ pipo install openerp-sale
8. Pypi-line index distribution openerpapps.info
– Channels/series: openerp/8.0, ocb/7.0, …
– Server dependencies included in Index: skip PyPi.
Automated builds with pipo.py
– Only changed modules are rebuilt.
– Multiple vcs support: bzr, git, hg.
ii. Distributing the packages
9. Iii. Installation the pip way
● $ virtualenv --system-site-packages mydemo
● $ source mydemo/bin/activate
$ pip install --index-url
http://openerpapps.info/simple/openerp/7.0
openerp-sale
11. Developers?
– Provide the simplest way to install Odoo
Integrators?
– Allow pip to be a part of dev and ops workflows.
End-users?
– Ease community Apps & Features discovery.
Where can we go?