2014-10-08 6 views
0

Я написал пользовательский загрузчик/импортер модуля Python, который имеет методы find_module и load_module. Я столкнулся с проблемой, когда хочу импортировать модуль Cherrypy.Параметры входных параметров Weird load_module

В

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', погрузчик к моему погрузчиком, имени к 'CherryPy' и пакета к 'CherryPy'. Что-то не хватает?

ответ

0

Я понял, что случилось: в моем find_module я всегда возвращал своего импортера, что фактически блокировало абсолютный импорт из когда-либо происходящего.

Смежные вопросы