Стандартное решение для поддержки Python 2 и Python 3

Я пытаюсь написать программу, совместимую с переходом, и мне было интересно, что такое «лучший» способ справиться с ситуацией, когда вам нужен другой импорт.

В моем конкретном случае я использую ConfigParser.SafeConfigParser() из Python2, который становится configparser.ConfigParser() в Python3.

До сих пор я работал над ним либо с помощью попытки, за исключением импорта, либо с помощью условного выражения для версии Python (используя sys ). Обе работы, но мне было интересно, было ли рекомендованное решение (возможно, я еще не пробовал).

ETA: Спасибо всем. Я не использовал никаких проблем.

Используйте шесть ! Это модуль совместимости python, который убирает различия между python3 и python2. Доступная здесь документация поможет вам решить эту проблему, а также любые другие проблемы, которые возникают у вас.

В частности, для вашего дела вы можете просто

 from six.moves import configparser import six if six.PY2: ConfigParser = configparser.SafeConfigParser else: ConfigParser = configparser.ConfigParser 

и вам будет хорошо.

Этот шаблон довольно стандартный:

 try: from configparser import ConfigParser except ImportError: from ConfigParser import SafeConfigParser as ConfigParser 

Вы также можете сделать это:

 import sys if sys.version[:1] == '2': from configparser import ConfigParser else: from ConfigParser import SafeConfigParser as ConfigParser 

Подробнее здесь .