2015-05-13 2 views
0

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

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

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

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

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

+1

См. Https://docs.python.org/3/howto/pyporting.html. Это также рекомендует ** переходить на Python 2.7 ** - существует еще много несовместимостей, если вам нужно продолжить поддержку 2.4.3 (что даже не является последним в ветке 2.4, см. Https://www.python.org /download/releases/2.4.3/). – jonrsharpe

+0

@jonrsharpe RHEL на сервере не будет обновляться до 5 лет. Я попытался убедить высших людей обновить Python, но тщетно: | Я попробовал попросить их установить python 3, но они запрашивают файл rpm :( – v1shnu

+2

См. Например https://blog.serverdensity.com/updating-python-on-rhelcentos/. Или просто бросьте, напишите рабочий код сейчас и волнуйтесь о портировании Py3, когда (и если) обновление действительно происходит, 5 лет - это ** длинный ** время! – jonrsharpe

ответ

1

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

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

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

import six 

Пример:

from six import u, b 

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

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

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

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

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

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

+0

* «Шесть поддерживает каждую версию Python с 2,5» * OP ориентируется на 2.4.3 как одну из своих версий. – CoryKramer

+0

@Cyber ​​Хорошая точка; Я не уверен, что есть решение * good * для Python <2.5; Даже схемы потеряли поддержку 2,5 года назад :) * sigh * –

+0

@JamesMills Я попробовал убедить ребят серверов обновиться, но они не будут продолжаться до следующих 5 лет. Также попробовали попросить их установить python 3, но они запрашивают файл rpm. Угадайте, у меня нет выбора. Любые другие варианты? – v1shnu

Смежные вопросы