Skip to content

perf: Odoo 19.0 editable install takes ~21s (36x slower than 18.0) #62

@trisdoan

Description

@trisdoan

Problem

Installing Odoo 19.0 in editable mode takes ~21s, compared to ~0.6s for 18.0 — a 36x regression.

Root Cause

Odoo 19.0 removed __init__.py from core directories (odoo/, odoo/addons/) and switched setup.py from find_packages() to find_namespace_packages() to compensate. Because find_namespace_packages() has no exclusions, it treats every subdirectory as a Python namespace package — including static assets, i18n files, XML data, views, security configs, etc.

Root cause chain:

  1. Odoo 19.0 removes __init__.py from odoo/ root → find_packages() returns 0 packages
  2. Odoo switches to find_namespace_packages() to compensate
  3. find_namespace_packages() has no exclusions → picks up all subdirs (static, i18n, data, views, security, tests…)
  4. setuptools build_editable processes all 7,791 "packages" → generates a 680KB finder file with all namespace paths → 36x slowdown

Measurements

Odoo 18.0 Odoo 19.0
setup.py method find_packages() find_namespace_packages()
Packages found 79 7,791
Packages with __init__.py ~79 1,974
Namespace-only dirs (no __init__.py) 0 5,817
Editable install time ~0.6s ~21.6s
SOURCES.txt lines 1,139 8,733
Generated __editable__ finder size small 680KB

The 5,817 namespace-only directories are non-Python assets: addons/*/static/, addons/*/i18n/, addons/*/data/, addons/*/views/, addons/*/security/, etc.

Reproduction

uv run --with setuptools python3 -c "
from setuptools import find_namespace_packages
pkgs = find_namespace_packages(where='/path/to/odoo/19.0')
print(f'Odoo 19.0: Found {len(pkgs)} packages')
"
# Output: Odoo 19.0: Found 7791 packages

time uv pip install -e 'file:///path/to/odoo/19.0#egg=odoo' --no-deps
# real  0m21.6s

Impact

Any user creating an Odoo 19.0 venv with odoo-venv experiences a ~21s freeze at the "Installing Odoo in editable mode" step.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions