3

我目前正在使用 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 ?如何强制所有模块使用绝对导入而不是相对导入?

4

0 回答 0