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