Я пытаюсь написать программу, совместимую с переходом, и мне было интересно, что «лучший» способ справиться с ситуацией, когда вам нужны разные импорт.Стандартное решение для поддержки Python 2 и Python 3
В моем конкретном случае я использую ConfigParser.SafeConfigParser()
из Python2, который становится configparser.ConfigParser()
в Python3.
До сих пор я работал над этим, используя попытку, кроме импорта, или используя условное выражение для версии Python (используя sys
). Обе работы, но мне было интересно, было ли рекомендованное решение (возможно, я еще не пробовал).
ETA: Спасибо всем. Я использовал six.moves
без проблем.
Существует множество причин, кроме версии python, почему импорт может вызвать исключение! Таким образом, условие для sys.version_info должно быть лучше двух идей. – nigel222
@ nigel222 импорт из stdlib не должен генерировать исключения; если они у вас есть гораздо большие проблемы. Проверка версий более хрупкая и не дает вам ничего. – tzaman
Это явно не касалось только stdlib, а не условного импорта в целом. Кроме того, «Большие проблемы» более распространены, чем вы думаете, если система представляет собой настольный компьютер, поддерживаемый кем-то, у которого нет ИТ-фона (любитель, университетский исследователь и т. Д.), Я бы предпочел узнать о них напрямую, а не отлаживать неправильный импорт, который «привык к работе»! – nigel222