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