Сделать 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 лет - это действительно много, и к тому времени те же ограничения могут и не быть!