将Python2.5移植到3.X时,如何替换;从<;模块>;导入*“;?

将Python2.5移植到3.X时,如何替换;从<;模块>;导入*“;?,python,python-3.x,python-2.5,Python,Python 3.x,Python 2.5,我有一个python 2.5包,其结构如下: Config.py包含以下行: from CommonDefines import * 在3.7中运行此代码会出现以下异常: 文件“./../.\ConfigLib\Config.py”,第7行,在 从CommonDefines导入*ModuleNotFoundError:没有名为“CommonDefines”的模块 将该行替换为: from .CommonDefines import * 。。。在3.7中起作用,但在2.5中给出以下错误: S

我有一个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:“导入*”不允许与“发件人”一起使用


我只想通过名称导入使用一个适当的名称,但这可以通过黑客的方式完成,供您个人使用,使用
exec

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

您甚至可以交换它们并捕获
SyntaxError

编写支持如此旧版本Python的多语言代码(上一个2.5.x版本是在2011年5月-)将非常困难(例如,仅支持2.7)。如果您确实需要继续支持2.5,则可能无法使用相同的代码库支持3.x。谢谢,但这并不能真正回答问题。您应该能够编写不同的导入,并封装在
块中,然后尝试使用
块。但正如@jornsharpe所写的,我不建议对两个版本使用相同的代码库,因为它们之间有很多变化。这就是为什么我没有将其作为答案发布@汉普斯拉尔森注意到OP有一个语法错误,这很难用
try:
/
来掩盖,除了:
.IMHO
*
导入是一种反模式,所以如果我是你,我就用导入的具体名称来替换
*
。这就是我最后做的事情,到目前为止它似乎还有效。