Install Indigo Open edX Tutor Palm

Dear Open edX community,

I am trying to install the indigo plugin on Open edx tutor Palm. When I run “tutor plugins install indigo” I get the following message:

Installing pip requirements:
# indigo
tutor-indigo>=16.0.0,<17.0.0
pip install --requirement /tmp/tutor-reqs-xk3r6trl.txt
Requirement already satisfied: tutor-indigo<17.0.0,>=16.0.0 in /usr/local/lib/python3.8/dist-packages (from -r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (16.0.0)
Requirement already satisfied: tutor<17.0.0,>=16.0.0 in /usr/local/lib/python3.8/dist-packages (from tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (16.0.2)
Requirement already satisfied: mypy in /usr/local/lib/python3.8/dist-packages (from tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (1.4.1)
Requirement already satisfied: appdirs in /usr/local/lib/python3.8/dist-packages (from tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (1.4.4)
Requirement already satisfied: kubernetes in /usr/local/lib/python3.8/dist-packages (from tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (26.1.0)
Requirement already satisfied: typing-extensions>=4.4.0 in /usr/local/lib/python3.8/dist-packages (from tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (4.7.1)
Requirement already satisfied: jinja2>=2.10 in /usr/local/lib/python3.8/dist-packages (from tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (3.1.2)
Requirement already satisfied: click>=8.0 in /usr/local/lib/python3.8/dist-packages (from tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (8.1.5)
Requirement already satisfied: pycryptodome in /usr/local/lib/python3.8/dist-packages (from tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (3.18.0)
Requirement already satisfied: pyyaml>=6.0 in /usr/local/lib/python3.8/dist-packages (from tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (6.0)
Requirement already satisfied: tomli>=1.1.0; python_version < "3.11" in /usr/local/lib/python3.8/dist-packages (from mypy->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (2.0.1)
Requirement already satisfied: mypy-extensions>=1.0.0 in /usr/local/lib/python3.8/dist-packages (from mypy->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (1.0.0)
Requirement already satisfied: google-auth>=1.0.1 in /usr/local/lib/python3.8/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (2.22.0)
Requirement already satisfied: setuptools>=21.0.0 in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (45.2.0)
Requirement already satisfied: websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 in /usr/local/lib/python3.8/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (1.6.1)
Requirement already satisfied: python-dateutil>=2.5.3 in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (2.7.3)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (2.22.0)
Requirement already satisfied: requests-oauthlib in /usr/local/lib/python3.8/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (1.3.1)
Requirement already satisfied: six>=1.9.0 in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (1.14.0)
Requirement already satisfied: certifi>=14.05.14 in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (2019.11.28)
Requirement already satisfied: urllib3>=1.24.2 in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (1.25.8)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.8/dist-packages (from jinja2>=2.10->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (2.1.3)
Requirement already satisfied: cachetools<6.0,>=2.0.0 in /usr/local/lib/python3.8/dist-packages (from google-auth>=1.0.1->kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (5.3.1)
Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.8/dist-packages (from google-auth>=1.0.1->kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (4.9)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.8/dist-packages (from google-auth>=1.0.1->kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (0.3.0)
Requirement already satisfied: oauthlib>=3.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib->kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (3.1.0)
Requirement already satisfied: pyasn1>=0.1.3 in /usr/local/lib/python3.8/dist-packages (from rsa<5,>=3.1.4->google-auth>=1.0.1->kubernetes->tutor<17.0.0,>=16.0.0->tutor-indigo<17.0.0,>=16.0.0->-r /tmp/tutor-reqs-xk3r6trl.txt (line 2)) (0.5.0)

So when I try to run tutor plugins enable indigo I get this error:

Error: plugin 'indigo' is not installed.

Any ideas or suggestions?

Thank you.

What’s the output of the following commands?

which tutor
pip freeze | grep tutor

this is the output:

# which tutor
/usr/local/bin/tutor
# pip freeze | grep tutor
tutor==16.0.2
tutor-indigo==16.0.0
tutor-mfe==16.0.0

Are you running any of these commands with sudo?

Yes, with sudo and as root. Same result

I’m ready to bet you have multiple installation of tutor on your computer: both as root and in your user-specific directory.

You should either run all commands as root/sudo, or none of them. I suggest the later. If you install tutor as non-root, the tutor binary will be located in ~/.local/bin. That directory must be in your path. Alternatively, you could install tutor in a virtual environment.

Thanks for the help Regis. I’ve removed all existing versions of tutor and started a new installation, running all commands with “sudo”. Now I can successfully install the Indigo theme.

In a production system you ideally wouldn’t want to run your application as root, since if anything were to somehow or another become compromised then it can become a backdoor into the highest privilege group. Tutor supports running as a non-sudo user (other than needing root access for installing the underlying software initially)
Virtual Environments (venv) for python, as regis also mentioned, are great as well since you keep installed python requirements separate from the underlying host’s python installation. You can for example on linux use the .bashrc file to store the path to your python venv for a local user named “tutor” that way when you ssh into tutor@yourserveraddress then the python venv will automatically be loaded and you can run your software without root privilege

1 Like

Hello, the same problem occurred to me when installing Tutor, and I tried to delete the entire Tutor with the following command because I installed tutor for my user and for root

tutor local stop
tutor dev stop
sudo rm -rf "$(tutor config printroot)"
pip uninstall tutor-openedx
sudo rm "$(which tutor)"
docker stop $(docker ps -aq)
sudo rm -rf .local/share/tutor

after finishing the deletion, I enter the command that you send and the following output was displayed

tutor==16.1.7
tutor-indigo==16.0.0

what should I do now, is it deleted correctly or do we need another command to delete Tutor?