Addons Path Configuration Errors in Odoo
When Odoo cannot find your custom modules, the root cause is almost always an incorrect addons_path configuration. You will see errors like:
odoo.modules.module: addons paths: ['/opt/odoo/odoo/addons', '/opt/odoo/odoo/odoo/addons']
WARNING odoo.modules.module: module my_custom_module: module not found
ERROR odoo.modules.loading: Module my_custom_module: not installableOr during startup:
odoo: error: option --addons-path: the path '/opt/odoo/custom' does not exist or is not a directoryUnderstanding addons_path
The addons_path parameter tells Odoo where to look for modules. Each path must be a directory that either contains modules directly or contains subdirectories that are modules (have __manifest__.py).
# Correct structure:
/opt/odoo/custom/
my_module/
__manifest__.py
__init__.py
models/
another_module/
__manifest__.py
__init__.pyThe path should point to /opt/odoo/custom/, NOT to /opt/odoo/custom/my_module/.
Fix 1: Verify Paths Exist
# Check what's configured
grep addons_path /etc/odoo.conf
# Verify each path exists
ls -la /opt/odoo/odoo/addons/
ls -la /opt/odoo/odoo/odoo/addons/
ls -la /opt/odoo/custom/
# Check that modules have __manifest__.py
find /opt/odoo/custom/ -name '__manifest__.py' -maxdepth 2Fix 2: Correct the Configuration
Edit odoo.conf with the proper paths:
[options]
addons_path = /opt/odoo/odoo/addons,/opt/odoo/odoo/odoo/addons,/opt/odoo/custom
# Rules:
# - Comma-separated, NO spaces after commas
# - Base Odoo addons paths must be included
# - Each path must be an absolute path
# - Each path must exist as a directory
# - Enterprise path goes before community if using EnterpriseFor Odoo Enterprise:
addons_path = /opt/odoo/enterprise,/opt/odoo/odoo/addons,/opt/odoo/odoo/odoo/addons,/opt/odoo/customFix 3: Permission Issues
The Odoo user must have read access to all addons paths:
# Check ownership
ls -la /opt/odoo/custom/
# Fix ownership
sudo chown -R odoo:odoo /opt/odoo/custom/
# Ensure read + execute permission on directories
sudo chmod -R 755 /opt/odoo/custom/Fix 4: Docker Volume Mounting
In Docker, addons paths must match the container's filesystem, not the host:
# docker-compose.yml
volumes:
- ./custom-addons:/mnt/extra-addons
# odoo.conf inside container
addons_path = /mnt/extra-addons,/usr/lib/python3/dist-packages/odoo/addonsCommon mistake: configuring the host path in odoo.conf instead of the container path.
Fix 5: Module Not Found After Adding Path
After updating addons_path, you must update the module list:
# Restart Odoo first
sudo systemctl restart odoo
# Then in Odoo:
# Settings > Technical > Update Apps List
# Or via command line:
./odoo-bin -c /etc/odoo.conf -d your_db --update=base --stop-after-initDiagnostic Checklist
| Check | Command | Expected |
|---|---|---|
| Path exists | ls -d /path/to/addons | Directory listed |
| Module has manifest | ls /path/to/addons/module/__manifest__.py | File exists |
| Permissions correct | sudo -u odoo ls /path/to/addons/ | Can list files |
| No trailing spaces | grep addons_path /etc/odoo.conf | Clean comma separation |
Prevention
DeployMonkey configures addons_path automatically during instance provisioning. Custom modules are deployed to managed paths with correct permissions. The AI agent validates module structure before deployment.