Organize Modules in Nested Directories
Odoo scans for modules one level deep in each path you provide. It does not recurse into subdirectories automatically. If your repository organizes modules in nested folders, you need to list each directory that directly contains modules.
The problem
Consider this structure:
my-odoo-repo/
├── addons/
│ ├── finance/
│ │ ├── account_extension/ ← module
│ │ └── payment_custom/ ← module
│ └── hr/
│ ├── hr_attendance_extra/ ← module
│ └── hr_contract_custom/ ← module
└── ...
Setting the addons path to /addons alone will not work — Odoo will look inside addons/ for a __manifest__.py and find none. The actual modules are one level deeper, inside finance/ and hr/.
The solution
List every directory that directly contains modules, separated by commas.
For the structure above:
/addons/finance,/addons/hr
Each path you provide must be the parent directory of the module folders, not the module folders themselves.
How to set the addons path
-
Go to your project and open the Branches tab.
-
Click on your branch to open its settings.
-
In the Custom Addons Path field, enter all the relevant directories:
/addons/finance,/addons/hr -
Click Save.
Flat structure at the root (recommended)
If you have control over your repository layout, the simplest approach is to place all modules directly at the root of the repository:
my-odoo-repo/
├── account_extension/ ← module
├── payment_custom/ ← module
├── hr_attendance_extra/ ← module
└── hr_contract_custom/ ← module
With this layout, no addons path configuration is needed — Skysize scans the root automatically.
Mixing root modules and subdirectory modules
If you set a custom addons path, Skysize uses only the paths you specify — the root is no longer scanned automatically. If you have modules at the root as well as in subdirectories, you must explicitly include /:
/,/addons/finance,/addons/hr
Omitting / means any modules at the repository root will not be found by Odoo.