Post content
Поздно писать код, совместимый с Python2 и Python3 одновременно. Если вы матёрый программист, то, возможно, использовали библиотеку six для создания совместимого кода. Или использовали различные модули автоматизации для преобразования кода из Python2 в совместимый для Python2 и Python3. Например sixer или python-future. Но это время прошло! Теперь пишем только на 3м Python. Совместимость с версией 2 скоро вовсе не потребуется (кроме отдельных тяжелых случаев поддержки legacy систем, но я надеюсь таких у вас нет или совсем мало) Скорее всего, у многих появляется вопрос, а что делать с кодом который написан под Python2? Садиться и переписывать? Или хотя бы сделать совместимым с Python3? Всё зависит от конкретной ситуации. Убедитесь что ваша инфраструктура готова под Python3 прежде чем начать. Скорее всего пора переписывать и не оглядываться назад! Но не всё так безнадёжно, в стандартной поставке Python уже давно есть готовый инструмент для автоматизации процесса. Это библиотека lib2to3 и прилагаемый скрипт 2to3.py С чего начать? 1. Документация Прежде всего почитайте документацию https://docs.python.org/3.8/library/2to3.html А также встроенная справка для Windows python C:\python37\Tools\scripts\2to3.py --help для Linux 2to3-3.7 --help 2to3-2.7 --help (имена зависят от установленных версий Python) 2. Тест Прежде чем приступать к ожесточенным конвертациям, обязательно протестируйте весь процесс! Например, чтобы просто посмотреть какие будут изменения в скрипте, запустите команду с флагом --list-fixes 2to3 --list-fixes my_script.py 3. Полезные советы Нашел развёрнутую статью про тему 2to3, советую почитать. http://python3porting.com/2to3.html 3. Конвертация Не забываем что в качестве источника для конвертации можно указать директорию. И ВСЕГДА указывайте путь сохранения результата. Пример конвертации пакета 2to3 --output-dir=./py3/package_name -W -n ./package_name #2to3