Сделать Python 2 совместимым с Python 3

Мое текущее требование - написать скрипт на Python 2.4.3 который поставляется в комплекте с RHEL 5 . Но через несколько лет, скажем, 5 лет, сервер может быть обновлен до RHEL 8 или 9, который поставляется с Python 3, Поэтому я должен написать код, который совместим с обеими версиями. Теперь мои сценарии содержат базовые операции, такие как создание каталогов, разархивирование файлов, манипуляции с файлами, чтение файлов XML (с которыми я сейчас занимаюсь) minidom) и немного хэширования.

Теперь я узнал, что инструмент под названием python-modernize делает работу, которая построена на вершине 2to3, Я искал инструмент, но получил файл tar.gz. Он не содержит файл Python-модернизировать, как говорится в его использовании. Но все, что я нашел, было setup.py файл. Я новичок в Python, и все, что я знаю, что что-то сделано с pip, Но я также читал, что использование pip - сложная работа для Python 2.4.3.

Пожалуйста, скажите мне, как я могу сделать работу.

Я также ссылался на это, но не мог найти, как использовать инструмент.

Также, пожалуйста, дайте мне знать, если есть хорошая альтернатива этому.

1 ответ

Решение

Использовать six Библиотека Бенджамина Петерсона.

Он был специально разработан для этого варианта использования. Это позволяет вам иметь единую кодовую базу, которая поддерживает как Python 2, так и Python 3, импортируя вещи, отличающиеся от 2 до 3, из шести библиотек.

Просто импортируйте его и используйте его определения:

import six

Пример:

from six import u, b

Выше приведены классические правила, в которых Python 3+ внес более строгие изменения в работу строк и байтов Unicode.

Six - это библиотека совместимости Python 2 и 3. Он предоставляет служебные функции для сглаживания различий между версиями Python с целью написания кода Python, совместимого с обеими версиями Python. Смотрите документацию для получения дополнительной информации о том, что предоставляется.

Six поддерживает каждую версию Python начиная с 2.5. Он содержится только в одном файле Python, поэтому его можно легко скопировать в ваш проект. (Уведомление об авторских правах и лицензии должно быть сохранено.)

Обновление: Извините, я пропустил Python<=2.5 требование там; но, честно говоря, я думаю, что использование шести - ваш лучший вариант. Вы должны будете убедить, что вам нужно использовать минимум Python 2.5.

Обновление № 2: Моя самая сильная рекомендация - как минимум обновить ваш код до Python 2.7. Не оставляйте позади, или вы всегда будете за мячом!

Обновление № 3: Согласно вышеупомянутым очень полезным комментариям; Согласен. Просто работай с тем, что у тебя есть сейчас. 5 лет - это действительно много, и к тому времени те же ограничения могут и не быть!

Другие вопросы по тегам