__import__ vs imp.load_module

Joh*_*ank 5 import ironpython python-2.7

尝试使用ironpython安装autopep8时出错:

ImportError: No module named logilab
Run Code Online (Sandbox Code Playgroud)

它失败的代码片段是:

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
Run Code Online (Sandbox Code Playgroud)

使用解释器ipy64导入logilab并没有失败.我为文件名添加了一个print语句,它显示:

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

该路径存在,它包含一个init .py,其中包含以下内容:

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

我通过添加快速修复错误和脏

except ImportError:
    mod = __import__(fullname)
Run Code Online (Sandbox Code Playgroud)

但由于我不知道可能产生的影响,我对这个问题没有很好的感觉.

现在,为什么使用imp.load_module失败了,使用import有什么区别?