Python 3 issues

In September 2020, we upgraded our autograder base image to use Python 3 for our autograder harness.

If you're having issues with your Python 3 autograder not starting and you're overriding the system version of python3, it may be occurring because you have overridden the system python3 executable. Since Gradescope uses python3 for our harness, we need to ensure that we have the correct dependencies installed, and if the system python3 executable is overridden, this may no longer be the case. There are a few possible ways to handle this situation.

If you have any trouble with these approaches, please contact help@gradescope.com and we'll help you get your autograder working.

Update your autograder to use an explicit version of python3

Instead of overriding the sytem python3 executable, you should be able to refer to an explicit Python version in your code. E.g., if you are installing python3.8, instead of overriding python3 you can use python3.8 explicitly in your scripts (e.g. in your run_autograder script, in any #! lines, etc).

You will need to install packages by using python3.8 -m pip ... instead of using pip3, since that would install packages in the default system version of python3.

This is the preferred approach to solving this issue, and should be most resilient in the long-term.

Only alias python3 within your run_autograder script

If it's easier to continue using the python3 executable name, you could alias it within your run_autograder script, so that it does not affect the rest of the system.

Install Gradescope autograder harness dependencies

This approach is a little more brittle, but you can also work around this issue by installing the dependencies our autograder harness needs within your custom Python version. The current list of dependencies is the following:

pyyaml pytz requests psutil grequests python-dateutil

You should be able to install these via pip3 or by adding these packages to your requirements.txt file.