为什么导入一些python子模块是不可能的?

时间:2017-08-31 22:51:46

标签: python

例如,我无法导入子模块numpy.core.setup,子模块numpy.distutils.msvc9compiler和其他许多模块也是如此。

修改

好的,这是代码的一个片段。

from importlib import import_module
from pkgutil import walk_packages
import sys
import operator


def get_attr(module, attr):
    return operator.attrgetter(attr.split('.', 1)[1])(module)


def isimported(module_name):
    return module_name in sys.modules


def get_submodules(module_name):
    submodules = {}
    module = import_module(module_name)
    for loader, name, is_pkg in walk_packages(module.__path__, module.__name__ + '.'):
        if isimported(name):
            submodules[name] = get_attr(module, name)
        else:
            try:
                submodules[name] = __import__(name)
            except ImportError:
                pass

if __name__ == "__main__":
    get_submodules('numpy')

1 个答案:

答案 0 :(得分:0)

numpy/core/setup.py并非旨在成为子模块。它是NumPy构建系统的一部分。它依赖于NumPy构建时才存在的东西,如果你尝试在实际安装的NumPy中导入它,它就会失败,因为它所依赖的东西不存在。