Running Multiple Tutor Versions on the Same PC

As an Open edX developer, you may need to work with multiple Tutor releases (e.g., Redwood, Sumac, Palm) on the same machine. The cleanest way to do this is by isolating each release in its own Python virtual environment and Tutor root directory.

Step 1: Create a Tutor Root Directory per Release

Each Tutor release needs its own storage directory for configs and data. For example, to prepare for the Redwood release:

  • cd ~/.local/share

  • mkdir redwood_tutor

This keeps everything related to Redwood isolated.

Step 2: Create a Python Virtual Environment

Different Tutor releases may require different Python versions. Always check the release notes or compatibility matrix before creating the environment.

Example for Redwood (Python 3.11):

  • python3.11 -m venv redwood_tutor_env

For older releases (e.g., Nutmeg, Olive), you may need Python 3.8–3.10 instead.

Step 3: Activate the Virtual Environment

Activate the environment before installing Tutor:

  • source redwood_tutor_env/bin/activate

Step 4: Install the Matching Tutor Version

Install the version of Tutor that corresponds to your Open edX release. For Redwood:

  • pip install “tutor[full]==18.0.0”

Step 5: Set the TUTOR_ROOT Path

Point Tutor to the directory created in Step 1:

  • export TUTOR_ROOT=~/.local/share/redwood_tutor

Step 6: Run Tutor in Developer Mode

Since this setup is for local development, use:

  • tutor dev launch

This ensures you can run multiple Tutor environments side by side without interfering with production instances.

Important Notes

  • Stop other Tutor environments first
    Before switching releases, shut down the currently active environment:

    tutor dev stop

  • Switching between releases

    • Deactivate the current venv (deactivate).

    • Activate the target release venv (source /bin/activate).

    • Export the correct TUTOR_ROOT.

  • Why tutor dev?

    • Developers often need multiple releases running on the same machine.

    • tutor local is better for single-instance setups but not ideal for parallel dev work.

    • Production setups will always run on separate servers, so this method won’t cause conflicts.

:white_check_mark: With this approach, you can seamlessly switch between multiple Tutor releases and keep your dev workflow clean, isolated, and efficient.

Hi,

I add the use of direnv, since when I change directories I automatically mount the python environment and the tutor variables

sudo apt install direnv

nano .envrc

.envrc
export TUTOR_ROOT=
export LOCAL_PROJECT_NAME=
export CADDY_HTTP_PORT=
export LMS_HOST=
export CMS_HOST=
source <(direnv stdlib)
layout python


finally

direnv allow