奇怪的load_module输入参数

时间:2014-10-08 09:04:44

标签: python python-2.7 package python-import

我编写了一个自定义Python模块加载器/导入器,它具有find_module和load_module方法。当我想用它导入Cherrypy模块时,我遇到了一些问题。

  

cherrypy / __ init __。py

它有如下行:

from cherrypy._cpcompat import urljoin

当我使用默认的Python导入程序时,只添加一个虚假的导入程序,例如:

class FakeImporter(object):
  def find_module(self, module_name, path=None):
    print module_name, path
    return None

我接到以下电话:

  

find_module( '的CherryPy')

     

find_module( 'cherrypy.cherrypy')

     

find_module( 'cherrypy._cpcompat')

听起来很正常。但是当我使用我的自定义加载器时,我接到了电话:

  

find_module( '的CherryPy')

     

find_module( 'cherrypy.cherrypy')

     

find_module( 'cherrypy.cherrypy._cpcompat')

可能导致此问题的原因是什么?我处理load_module('cherrypy.cherrypy')错了吗?我从内存中加载模块,因此将cherrypy。路径设置为['cherrypy'],同时将文件设置为'cherrypy', loader 我的装载机,名称到'cherrypy'和到'cherrypy'。有什么遗失的吗?

1 个答案:

答案 0 :(得分:0)

我弄清楚出了什么问题:在我的find_module中,我总是返回我的导入器,这有效地阻止了绝对导入的发生。