Lennart Regebro - Moving big projects to Python 3

Опубликовано: 13 Октябрь 2024
на канале: EuroPython Conference
1,082
20

"Moving big projects to Python 3
[EuroPython 2019 - Talk - 2019-07-12 - Boston]
[Basel, CH]

By Lennart Regebro

Next year Python 2 is no longer maintained. But you have a monster code base with clever tricks and libraries that don't support Python 2, and your data may be stored in a format that is hard to move Python 3. And that's the easy bit.

This talk focuses on the process of moving, not the code changes. Because it's the process that is the hard part. How do you get your code in a state where it's ready to move? How do you get the whole team on the boat to Python 3?

All Python 3 talks I have seen, including those I have given, and all the texts on how to port, including the book I wrote, focus on the code changes. With increasing backwards compatibility in Python 3 and forward-compatibility in Python 2, this actually became a lesser problem for big code bases.


The extra issues of large, old code bases

Can you stop adding features? (1 min)
Separate team vs getting everyone on it (2 min)
Python 2 compatibility: You need it (1 min)

The steps

Fix your development process (2 min)
Replace old libraries, or take over maintenance and port them (2 min)
Make sure your tests are solid (1 min)
Run 2to3 but only backwards compatible fixers (2 min)
Run tests on Python 3 to stop backsliding (4 min)

Run all tests: Expansive or slow
Store passed tests
Detect tests that change
Turning it off adds a lot of extra work

Port all your little utilities and tool scripts (1 min)
Fix fix fix fix (1 min)
Add tests with Python 2 data, to test migration (2 min)

You might need migration scripts

Extra careful staging tests (1 min)
Production: Try, fail, repeat (1 min)
Clean the code up (3 min)





License: This video is licensed under the CC BY-NC-SA 3.0 license: https://creativecommons.org/licenses/...
Please see our speaker release agreement for details: https://ep2019.europython.eu/events/s...

"