Python 3 in edx-platform

Description

We want to add support for running edx-platform with Python 3. Reasons include:

  • Support for Python 2.7 ends on January 1, 2020

  • Django 2.0 and higher no longer support Python 2.7

  • Many useful standard library features like asyncio and tracemalloc are only available in Python 3

  • Many useful new packages like API Star, Django Channels, and Dramatiq only work with Python 3

The tickets in this epic help move us towards this goal without requiring any significant prior knowledge of the Open edX source code or needing any other work to be completed first. See OEP-7 for details on the current overall plan for updating edx-platform to support Python 3; that document can serve as inspiration for tickets to create in this epic.

Questions and discussion about the Python 3 porting effort outside the scope of existing tickets in this epic should be directed to the #python-3 channel in the Open edX Slack team.

Tests can be run via `make shell` or devstack's `make lms-shell` under Python 3.5 by installing the Python 3.5 library headers and running tox:

  • apt-get install python3.5-dev

  • tox -e py35-django111 -- pytest <directory>

Dependencies are now fully installing under Python 3, and we're starting to fix bugs in test initialization. The current known blocker to getting tests to run is INCR-230.

Status

Assignee

Feanil Patel

Reporter

Jeremy Bowman

Labels

None

Priority

Unset

Epic Name

Python 3 in edx-platform
Configure