The clock is ticking on Python 2.7, with support to be dropped in January 2020. With major dependencies such as Django, NumPy and pandas moving to Python 3 only, the time has come for even big established codebases to consider upgrading. Many organisations are still postponing for various reasons; we will attempt to demonstrate that with a bit of planning and perseverance, and the assistance of some handy tools, we can embrace the future!
This session will provide a first-hand perspective on how we upgraded a large (~65,000 lines of python code) 8-year-old Django project with multiple external dependencies from Python 2.7 to Python 3.6.
We will briefly discuss the benefits of upgrading to Python 3, and architectural considerations. The session will primarily focus on the practicalities of upgrading the code itself. We will not try to provide a single “best” solution for upgrading to Python 3, but rather will introduce some of the available tools, provide an insight into how we used them, and their advantages and disadvantages from our experience. We will discuss preparatory steps and approaches, strategies for dealing with external dependencies, and “gotchas” that we encountered during the process.
The aim of this session is to provide an example of how a Python 3 upgrade on an established commercial product can be successfully completed, and to furnish audience members with a set of tools and strategies to help them with their own projects.