Как заставить инструкцию импорта работать как на python 2, так и на python 3

#python #migration

Вопрос:

Я выполняю миграцию кода с python 2 на python 3. есть некоторый код, который я не переношу и который необходим для кода, который я переношу, поэтому мне нужно, чтобы некоторые операторы импорта работали в обеих версиях, но, например, имя пакета было изменено:

 import urlparse  # Python2
import urllib.parse as urlparse  # Python 3
 

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

Комментарии:

1. Если вы пытаетесь написать код полиглота six (2×3), может помочь: six.readthedocs.io/#module-six.moves . Или просто используйте «попробуй и поймай».

2. Нет необходимости заниматься миграцией самостоятельно. Взгляните на python3porting.com который предлагает более позднюю версию книги, которую я нашел очень полезной в большой миграции.

Ответ №1:

Для импорта вы можете выполнить следующие действия:

 import sys
if sys.version_info[0] < 3:
    #import your py2 packages
else:
    #import your py3 packages