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.
-
With this approach, you can seamlessly switch between multiple Tutor releases and keep your dev workflow clean, isolated, and efficient.