在相对导入和绝对导入之间切换内置模块

时间:2019-04-21 07:29:08

标签: python python-3.x python-import

所以我有导入标准模块checkmarc的脚本。

import checkdmarc

我想实现一些模拟checkmarc,它将与脚本位于同一目录。 现在有时它会在那里,我希望脚本提取该本地模块,如果不存在,则应使用标准的checkmarc。 我知道我可以做一些类似的事情,如果路径中的文件存在,它将接受,否则,但是我想将导入行保持为import checkmarc

从阅读:https://docs.python.org/3/whatsnew/2.5.html#pep-328-absolute-and-relative-imports 有一部分正是我所需要的,但仅适用于Python 2.4及更低版本:

  

在Python 2.4和更低版本中,它将首先   查看软件包的目录以执行相对导入,   pkg / string.py,将该文件的内容导入为pkg.string   模块,并且该模块绑定到pkg.main中的名称字符串   模块的名称空间。

如果有一种优雅的方法,我很想听听。

1 个答案:

答案 0 :(得分:1)

如果您的自定义模块具有相同的名称,我认为您无法执行此操作。但是,您可以执行以下操作:

try:
    import customcheckdmarc as checkdmarc
except ImportError:
    import checkdmarc as checkdmarc

这将加载您的customecheckedmarc.py(如果存在),否则将加载默认的checkdmarc。