У меня есть пакет python 2.5 со следующей структурой:
Config.py содержит следующую строку:
from CommonDefines import *
Выполнение этого кода в версии 3.7 приводит к следующему исключению:
Файл "../../.\ConfigLib\Config.py", строка 7, из импорта CommonDefines * ModuleNotFoundError: Нет модуля с именем "CommonDefines"
Заменив эту строку на:
from .CommonDefines import *
... работает в 3.7, но выдает следующую ошибку в 2.5:
SyntaxError: «импорт *» не разрешен с «из».
Есть ли способ написать эту строку так, чтобы она работала как в 2.5, так и в 3.X?
ИЗМЕНИТЬ:
Следующее не работает, так как второй импорт вызывает синтаксическую ошибку в 2.5
try:
from CommonDefines import *
except:
from .CommonDefines import *
SyntaxError: «импорт *» не разрешен с «из».
six
поддерживает только 2.7, например). Если вам действительно нужно продолжать поддерживать 2.5, возможно, вы не сможете поддерживать 3.x с той же кодовой базой. - person jonrsharpe   schedule 20.02.2020try except
. Но, как пишет @jonrsharpe, я бы не рекомендовал использовать одну и ту же кодовую базу для обеих версий, потому что между ними произошло много изменений. - person Hampus Larsson   schedule 20.02.2020try:
/except:
. - person jonrsharpe   schedule 20.02.2020*
импорт в любом случае является анти-шаблоном, поэтому на вашем месте я бы просто заменил*
на конкретные импортированные имена. - person AKX   schedule 20.02.2020