将python 2.5 移植到3.X 时,如何替换"from <module> import *"?

When porting python 2.5 to 3.X, how can I replace "from <module> import *"?

我有一个 python 2.5 包,结构如下:

Config.py 包含以下行:

from CommonDefines import *

在 3.7 中运行此代码会出现以下异常:

File "../../.\ConfigLib\Config.py", line 7, in from CommonDefines import * ModuleNotFoundError: No module named 'CommonDefines'

将该行替换为:

from .CommonDefines import *

... 在 3.7 中有效,但在 2.5 中出现以下错误:

SyntaxError: 'import *' not allowed with 'from .'

有没有办法编写这一行,以便在 2.5 和 3.X 中都可以使用?

编辑:

以下不起作用,因为第二次导入会触发 2.5 中的语法错误

try:
    from CommonDefines import *
except:
    from .CommonDefines import *

SyntaxError: 'import *' not allowed with 'from .'

我只想使用正确的逐个名称导入,但这可以通过一种 hacky 方式完成,供您个人使用,使用 exec:

try:
    from CommonDefines import *
except ModuleNotFoundError:
    exec('from .CommonDefines import *')

你甚至可以交换它们并抓住 SyntaxError