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

Python 如何在所有模块中强制绝对导入,python,import,Python,Import,我目前正在使用python 2.7.3 我向sys.meta_路径添加了一个导入钩子,该钩子只实现find_模块函数;事情是这样的: class SvnImporter(object): def find_module(self, fullname, *args): if fullname.split(".")[0] == "load_from_svn": exported_parent_dir = self.export_from_svn(ful

我目前正在使用python 2.7.3

我向sys.meta_路径添加了一个导入钩子,该钩子只实现find_模块函数;事情是这样的:

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

在主脚本的开头,我已经有了来自_ufuture _; import absolute(绝对导入)的
——我认为这为所有随后加载的模块打开了绝对导入?如何强制所有模块使用绝对导入而不是相对导入?

来自未来的导入仅适用于当前模块。除了切换到Python3之外,您无法在任何其他模块上强制执行此操作。如果将来的语句应用于其他模块,则任何不使用新语义编写的无关代码都将灾难性地失败。防止这是未来语句存在的原因。啊,明白了,谢谢你的澄清:^)这是我的一个很大的疏忽-让它成为一个答案?哦,等等-在主load_from_svn模块的init.py中,我确实从future import绝对导入了只适用于
的init__.py