Skip to main content

A command-line tool to spin up isolated Odoo dev environment in seconds.

Project description

odoo-venv

A command-line tool to spin up isolated Odoo dev environment in seconds.

Installation

pip install odoo-venv

Quick Start

1. Direct CLI Arguments

Example:

odoo-venv create 17.0 \
    --odoo-dir ~/code/odoo/odoo/17.0 \
    --addons-path ~/code/odoo/addons/web,~/code/odoo/addons/mail \
    --python-version 3.10 \
    --install-addons-dirs-requirements \
    --extra-requirement "debugpy,ipython"

This command creates a virtual environment for Odoo 17.0 with the following specifications:

  • Odoo source is located at ~/code/odoo/odoo/17.0.
  • Additional addons are in ~/code/odoo/addons/web and ~/code/odoo/addons/mail.
  • The environment uses Python 3.10.
  • It installs dependencies from requirements.txt files found in the addons paths.
  • It also installs debugpy and ipython.

2. Using Presets

The tool includes 4 built-in presets: local, demo, project, ci (see odoo_venv/assets/presets.toml)

Example:

odoo-venv create 17.0 \
    --odoo-dir ~/code/odoo/odoo/17.0 \
    --addons-path ~/code/odoo/addons/web,~/code/odoo/addons/mail \
    --preset demo

This command will apply all the options from the demo preset. You can still override any preset option by providing a direct CLI argument. For example, to use a different extra_requirement for a specific run:

odoo-venv create 17.0 \
    --odoo-dir ~/code/odoo/odoo/17.0 \
    --addons-path ~/code/odoo/addons/web,~/code/odoo/addons/mail \
    --preset demo \
    --extra-requirement "pylint"

3. As a Library

The tool can also be used as lib in a custom python script

Example:

from odoo_venv import create_odoo_venv

create_odoo_venv(
    odoo_version="17.0",
    odoo_dir="~/code/odoo/odoo/17.0",
    venv_dir="./.venv",
    python_version="3.10",
    addons_paths=["~/code/odoo/addons/web", "~/code/odoo/addons/mail"],
    install_addons_dirs_requirements=True,
    extra_requirements=["debugpy", "ipython"],
)

ovx — on-the-fly module runner

ovx is a companion command that runs an Odoo addon instantly — like npx/uvx for Odoo. It detects the required Odoo series from the addon's __manifest__.py, finds or creates a matching venv, installs any missing Python dependencies, and launches Odoo with -i <module>. The database is ephemeral by default and is dropped on exit.

Multiple addons can be passed as a comma-separated list. The first addon's manifest decides the Odoo series; mismatched modules will fail at Odoo's module-not-found error. Paths containing commas are not supported.

# Auto-discover a matching venv in the current directory:
ovx ./crm_eav_fields

# Run multiple addons in a single ephemeral DB:
ovx ./module_a,~/oca/module_b

# Explicit venv:
ovx ./crm_eav_fields --venv-dir ~/code/foo/.venv

# Fresh-create a venv (requires Odoo source):
ovx ./crm_eav_fields --odoo-dir ~/code/odoo/19.0

# Named, persistent database (not dropped on exit):
ovx ./crm_eav_fields -d my_dev_db

# Pass extra arguments through to Odoo:
ovx ./crm_eav_fields -- --log-level=debug --workers 0

# Extra addons paths (e.g. enterprise/OCA) merged with the venv's stored addons_path:
ovx ./my-addon --odoo-dir ~/odoo --addons-path ~/enterprise,~/oca/server-tools

--addons-path accepts a comma-separated list of extra paths. They are merged with the venv's stored addons_path and the addon's own parent directory (deduped, order preserved). When no venv is found and a fresh one is created, the paths are also passed to create_odoo_venv so Python deps declared in enterprise/OCA manifests are installed during venv build.

Venv resolution priority

Priority Condition Outcome
1 --venv-dir provided Use it; error if Odoo version mismatches
2 Exactly one venv found under CWD matching the addon's series Use it
3 Multiple matches Error — pass --venv-dir to disambiguate
4 No match, --odoo-dir provided Create a fresh venv
5 No match, no --odoo-dir Error

Database lifecycle

By default ovx generates a unique ephemeral DB name (ovx_<joined_modules>_<hex8>) and drops it when Odoo exits — even on Ctrl-C or non-zero exit. Pass -d <name> to use a named, persistent database instead (no automatic create or drop).

Development

To test with a clean state (no cached packages):

uv cache clean --force

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

odoo_venv-1.25.0.tar.gz (56.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

odoo_venv-1.25.0-py3-none-any.whl (60.6 kB view details)

Uploaded Python 3

File details

Details for the file odoo_venv-1.25.0.tar.gz.

File metadata

  • Download URL: odoo_venv-1.25.0.tar.gz
  • Upload date:
  • Size: 56.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for odoo_venv-1.25.0.tar.gz
Algorithm Hash digest
SHA256 4f69aa3845c3b7bf344a3f481be862b74bdc4154ca0142fe8094b842d451192e
MD5 395549a8bd6ca0e717fcef44f84e1f0b
BLAKE2b-256 940e456d4e29bb5442880e0353d6a60671e45e433134e44bc638c5ee6c672585

See more details on using hashes here.

Provenance

The following attestation bundles were made for odoo_venv-1.25.0.tar.gz:

Publisher: release.yaml on trobz/odoo-venv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file odoo_venv-1.25.0-py3-none-any.whl.

File metadata

  • Download URL: odoo_venv-1.25.0-py3-none-any.whl
  • Upload date:
  • Size: 60.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for odoo_venv-1.25.0-py3-none-any.whl
Algorithm Hash digest
SHA256 92f194942a0cc2931aa35c70d024e4d4dc283cdbba9b70142d0aa143af1abb5f
MD5 a8746009e01b753c4169daddcd9222fc
BLAKE2b-256 3a08f4381767e53a9103186a13d5d9bd6a6f8ea528f6fd4fd5bd4d3194677712

See more details on using hashes here.

Provenance

The following attestation bundles were made for odoo_venv-1.25.0-py3-none-any.whl:

Publisher: release.yaml on trobz/odoo-venv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page