__import__ против imp.load_module

Я получил сообщение об ошибке при попытке установить autopep8 с Ironpython:

ImportError: No module named logilab

Фрагмент кода, который не удалось:

def load_module(self, fullname):
    self._reopen()
    try:
        mod = imp.load_module(fullname, self.file, self.filename, self.etc)
    finally:
        if self.file:
            self.file.close()
    # Note: we don't set __loader__ because we want the module to look
    # normal; i.e. this is just a wrapper for standard import machinery
    return mod

При использовании интерпретатора ipy64 импорт logilab не завершился неудачей. Я добавил оператор печати для имени файла, и он показал:

C:\Program Files (x86)\IronPython 2.7\Lib\site-packages\logilab_common-0.59.1-py2.7.egg\logilab

Путь существует и содержит файл init.py со следующим содержимым:

"""generated file, don't modify or your data will be lost"""
try:
    __import__('pkg_resources').declare_namespace(__name__)
except ImportError:
    pass

Я исправил ошибку быстро и грязно, добавив

except ImportError:
    mod = __import__(fullname)

но у меня нет хорошего представления об этом исправлении, так как я не знаю возможных последствий.

Теперь, почему использование imp.load_module завершается неудачно и в чем разница с использованием импорта?

0 ответов

Другие вопросы по тегам