如何在所有模块中强制绝对导入

时间:2013-08-02 17:07:21

标签: python import

我目前正在使用python 2.7.3。

我在sys.meta_path中添加了一个导入钩子,它只实现了find_module函数;它是这样的:

class SvnImporter(object):
    def find_module(self, fullname, *args):
        if fullname.split(".")[0] == "load_from_svn":
            exported_parent_dir = self.export_from_svn(fullname)
            sys.path.append(exported_parent_dir)
        return None

所有SvnImporter都会从svn导出所需的模块,并将其添加到sys.path,以便可以通过常规方法导入。

我遇到的问题是所有这些正常导入的模块都在进行相对导入,除非我特意提出

from __future__ import absolute_import
每个文件的开头。我看到的错误说的是:

module "load_from_svn.module1.socket" could not be loaded

我在主脚本的开头已经有from __future__ import absolute_import - 我认为这为所有后续加载的模块启用了absolute_import?如何强制所有模块使用绝对导入而不是相对导入?

0 个答案:

没有答案